Skip Menu |

This queue is for tickets about the Safe CPAN distribution.

Report information
The Basics
Id: 112092
Status: open
Priority: 0/
Queue: Safe

People
Owner: Nobody in particular
Requestors: mark.ellis [...] cartridgesave.co.uk
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: broken %SIG in 2.35+
Date: Wed, 17 Feb 2016 10:07:16 +0000
To: bug-Safe [...] rt.cpan.org
From: Mark Ellis <mark.ellis [...] cartridgesave.co.uk>
In 2.35 changes were made to localise %SIG in the Safe Compartment. This clobbers signal handlers already setup, With safe 2.33 perl -MSafe -e '$f = Safe->new; warn "Then\n"; for ( keys %SIG ) { $SIG{$_} = $_; warn " \$SIG{$_} => $SIG{$_}\n" } $f->reval("1 + 1"); warn "\nNow\n"; for ( keys %SIG ) { warn " \$SIG{$_} => $SIG{$_}\n" }'; Then $SIG{NUM62} => main::NUM62 $SIG{NUM55} => main::NUM55 $SIG{NUM61} => main::NUM61 $SIG{NUM53} => main::NUM53 $SIG{CLD} => main::CLD $SIG{NUM58} => main::NUM58 $SIG{PWR} => main::PWR $SIG{NUM35} => main::NUM35 $SIG{NUM45} => main::NUM45 $SIG{SEGV} => main::SEGV $SIG{XCPU} => main::XCPU $SIG{NUM40} => main::NUM40 $SIG{RTMAX} => main::RTMAX $SIG{POLL} => main::POLL $SIG{NUM41} => main::NUM41 $SIG{NUM44} => main::NUM44 $SIG{RTMIN} => main::RTMIN $SIG{NUM32} => main::NUM32 $SIG{NUM49} => main::NUM49 $SIG{TERM} => main::TERM $SIG{INT} => main::INT $SIG{SYS} => main::SYS $SIG{UNUSED} => main::UNUSED $SIG{ALRM} => main::ALRM $SIG{NUM38} => main::NUM38 $SIG{NUM60} => main::NUM60 $SIG{ILL} => main::ILL $SIG{NUM36} => main::NUM36 $SIG{ABRT} => main::ABRT $SIG{NUM42} => main::NUM42 $SIG{TTIN} => main::TTIN $SIG{NUM46} => main::NUM46 $SIG{NUM52} => main::NUM52 $SIG{STOP} => main::STOP $SIG{NUM37} => main::NUM37 $SIG{CONT} => main::CONT $SIG{VTALRM} => main::VTALRM $SIG{NUM54} => main::NUM54 $SIG{NUM39} => main::NUM39 $SIG{NUM47} => main::NUM47 $SIG{CHLD} => main::CHLD $SIG{KILL} => main::KILL $SIG{WINCH} => main::WINCH $SIG{NUM43} => main::NUM43 $SIG{USR1} => main::USR1 $SIG{QUIT} => main::QUIT $SIG{PIPE} => main::PIPE $SIG{NUM63} => main::NUM63 $SIG{TSTP} => main::TSTP $SIG{TTOU} => main::TTOU $SIG{XFSZ} => main::XFSZ $SIG{FPE} => main::FPE $SIG{URG} => main::URG $SIG{NUM59} => main::NUM59 $SIG{NUM33} => main::NUM33 $SIG{NUM51} => main::NUM51 $SIG{USR2} => main::USR2 $SIG{TRAP} => main::TRAP $SIG{IO} => main::IO $SIG{NUM48} => main::NUM48 $SIG{STKFLT} => main::STKFLT $SIG{HUP} => main::HUP $SIG{NUM57} => main::NUM57 $SIG{NUM56} => main::NUM56 $SIG{NUM50} => main::NUM50 $SIG{BUS} => main::BUS $SIG{PROF} => main::PROF $SIG{IOT} => main::IOT Now $SIG{NUM62} => main::NUM62 $SIG{NUM55} => main::NUM55 $SIG{NUM61} => main::NUM61 $SIG{NUM53} => main::NUM53 $SIG{CLD} => main::CHLD $SIG{NUM58} => main::NUM58 $SIG{PWR} => main::PWR $SIG{NUM35} => main::NUM35 $SIG{NUM45} => main::NUM45 $SIG{SEGV} => main::SEGV $SIG{XCPU} => main::XCPU $SIG{NUM40} => main::NUM40 $SIG{RTMAX} => main::RTMAX $SIG{POLL} => main::IO $SIG{NUM41} => main::NUM41 $SIG{NUM44} => main::NUM44 $SIG{RTMIN} => main::RTMIN $SIG{NUM32} => main::NUM32 $SIG{NUM49} => main::NUM49 $SIG{TERM} => main::TERM $SIG{INT} => main::INT $SIG{SYS} => main::UNUSED $SIG{UNUSED} => main::UNUSED $SIG{ALRM} => main::ALRM $SIG{NUM38} => main::NUM38 $SIG{NUM60} => main::NUM60 $SIG{ILL} => main::ILL $SIG{NUM36} => main::NUM36 $SIG{ABRT} => main::IOT $SIG{NUM42} => main::NUM42 $SIG{TTIN} => main::TTIN $SIG{NUM46} => main::NUM46 $SIG{NUM52} => main::NUM52 $SIG{STOP} => main::STOP $SIG{NUM37} => main::NUM37 $SIG{CONT} => main::CONT $SIG{VTALRM} => main::VTALRM $SIG{NUM54} => main::NUM54 $SIG{NUM39} => main::NUM39 $SIG{NUM47} => main::NUM47 $SIG{CHLD} => main::CHLD $SIG{KILL} => main::KILL $SIG{WINCH} => main::WINCH $SIG{NUM43} => main::NUM43 $SIG{USR1} => main::USR1 $SIG{QUIT} => main::QUIT $SIG{PIPE} => main::PIPE $SIG{NUM63} => main::NUM63 $SIG{TSTP} => main::TSTP $SIG{TTOU} => main::TTOU $SIG{XFSZ} => main::XFSZ $SIG{FPE} => main::FPE $SIG{URG} => main::URG $SIG{NUM59} => main::NUM59 $SIG{NUM33} => main::NUM33 $SIG{NUM51} => main::NUM51 $SIG{USR2} => main::USR2 $SIG{TRAP} => main::TRAP $SIG{IO} => main::IO $SIG{NUM48} => main::NUM48 $SIG{STKFLT} => main::STKFLT $SIG{HUP} => main::HUP $SIG{NUM57} => main::NUM57 $SIG{NUM56} => main::NUM56 $SIG{NUM50} => main::NUM50 $SIG{BUS} => main::BUS $SIG{PROF} => main::PROF $SIG{IOT} => main::IOT and with safe >2.33 perl -MSafe -e '$f = Safe->new; warn "Then\n"; for ( keys %SIG ) { $SIG{$_} = $_; warn " \$SIG{$_} => $SIG{$_}\n" } $f->reval("1 + 1"); warn "\nNow\n"; for ( keys %SIG ) { warn " \$SIG{$_} => $SIG{$_}\n" }'; Then $SIG{WINCH} => main::WINCH $SIG{PROF} => main::PROF $SIG{NUM61} => main::NUM61 $SIG{NUM56} => main::NUM56 $SIG{STOP} => main::STOP $SIG{NUM42} => main::NUM42 $SIG{ILL} => main::ILL $SIG{IOT} => main::IOT $SIG{NUM38} => main::NUM38 $SIG{STKFLT} => main::STKFLT $SIG{XCPU} => main::XCPU $SIG{NUM45} => main::NUM45 $SIG{NUM40} => main::NUM40 $SIG{NUM52} => main::NUM52 $SIG{TRAP} => main::TRAP $SIG{SEGV} => main::SEGV $SIG{NUM55} => main::NUM55 $SIG{NUM58} => main::NUM58 $SIG{NUM57} => main::NUM57 $SIG{NUM37} => main::NUM37 $SIG{ALRM} => main::ALRM $SIG{INT} => main::INT $SIG{RTMAX} => main::RTMAX $SIG{NUM59} => main::NUM59 $SIG{USR1} => main::USR1 $SIG{NUM33} => main::NUM33 $SIG{TSTP} => main::TSTP $SIG{XFSZ} => main::XFSZ $SIG{NUM32} => main::NUM32 $SIG{KILL} => main::KILL $SIG{QUIT} => main::QUIT $SIG{NUM44} => main::NUM44 $SIG{HUP} => main::HUP $SIG{IO} => main::IO $SIG{TTOU} => main::TTOU $SIG{CONT} => main::CONT $SIG{ABRT} => main::ABRT $SIG{UNUSED} => main::UNUSED $SIG{PIPE} => main::PIPE $SIG{FPE} => main::FPE $SIG{NUM49} => main::NUM49 $SIG{USR2} => main::USR2 $SIG{URG} => main::URG $SIG{NUM53} => main::NUM53 $SIG{NUM35} => main::NUM35 $SIG{CLD} => main::CLD $SIG{NUM63} => main::NUM63 $SIG{BUS} => main::BUS $SIG{NUM36} => main::NUM36 $SIG{NUM51} => main::NUM51 $SIG{PWR} => main::PWR $SIG{RTMIN} => main::RTMIN $SIG{NUM62} => main::NUM62 $SIG{NUM48} => main::NUM48 $SIG{CHLD} => main::CHLD $SIG{NUM50} => main::NUM50 $SIG{NUM41} => main::NUM41 $SIG{POLL} => main::POLL $SIG{TTIN} => main::TTIN $SIG{NUM60} => main::NUM60 $SIG{VTALRM} => main::VTALRM $SIG{TERM} => main::TERM $SIG{SYS} => main::SYS $SIG{NUM39} => main::NUM39 $SIG{NUM46} => main::NUM46 $SIG{NUM43} => main::NUM43 $SIG{NUM54} => main::NUM54 $SIG{NUM47} => main::NUM47 Now $SIG{WINCH} => $SIG{PROF} => $SIG{NUM61} => $SIG{NUM56} => $SIG{STOP} => $SIG{NUM42} => $SIG{ILL} => $SIG{IOT} => $SIG{NUM38} => $SIG{STKFLT} => $SIG{XCPU} => $SIG{NUM45} => $SIG{NUM40} => $SIG{NUM52} => $SIG{TRAP} => $SIG{SEGV} => $SIG{NUM55} => $SIG{NUM58} => $SIG{NUM57} => $SIG{NUM37} => $SIG{ALRM} => $SIG{INT} => $SIG{RTMAX} => $SIG{NUM59} => $SIG{USR1} => $SIG{NUM33} => $SIG{TSTP} => $SIG{XFSZ} => $SIG{NUM32} => $SIG{KILL} => $SIG{QUIT} => $SIG{NUM44} => $SIG{HUP} => $SIG{IO} => $SIG{TTOU} => $SIG{CONT} => $SIG{ABRT} => $SIG{UNUSED} => $SIG{PIPE} => $SIG{FPE} => $SIG{NUM49} => $SIG{USR2} => $SIG{URG} => $SIG{NUM53} => $SIG{NUM35} => $SIG{CLD} => $SIG{NUM63} => $SIG{BUS} => $SIG{NUM36} => $SIG{NUM51} => $SIG{PWR} => $SIG{RTMIN} => $SIG{NUM62} => $SIG{NUM48} => $SIG{CHLD} => $SIG{NUM50} => $SIG{NUM41} => $SIG{POLL} => $SIG{TTIN} => $SIG{NUM60} => $SIG{VTALRM} => $SIG{TERM} => $SIG{SYS} => $SIG{NUM39} => $SIG{NUM46} => $SIG{NUM43} => $SIG{NUM54} => $SIG{NUM47} =>
This is quite severe, as it has a direct impact on Apps and framework relying on Signals for their operations (Mojolicious for instance). That means that if any dependency uses Safe, frameworks like Mojolicious just stop working.