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} =>