Hello - I recently discovered that when we do a DBI->connect to an Oracle database, the process no longer responds to SIGINT signals. I'm not sure if it's something in DBD::Oracle (I can't find anything messing with $SIG{INT}) or something in the Oracle client itself but the fix is relatively simple and I'm hoping it can be included in DBD::Oracle (unless there's a downside I'm not seeing).
Here's some code that illustrates the problem: http://gist.github.com/660058#file_dbd_oracle_sigint_fail.pl Basically, the forked child process discards the SIGINT signal once it's done a DBI->connect. The workaround seems fairly simple (a single-line change from the above: http://gist.github.com/660058#file_dbd_oracle_sigint_works.pl): { local $SIG{INT}; # make sure $SIG{INT} returns to normal after we leave this block $dbh = DBI->connect('dbi:Oracle:mydb', 'user', 'password'); warn "connected in child ($$)\n"; } Is this something that would be appropriate to go in the DBD::Oracle::dr::connect sub? I have not checked any other signal handlers besides INT and TERM (TERM seems to work fine) but perhaps it'd be better to localize the entire %SIG hash: local @SIG{ keys %SIG }; Thoughts? Brian