This post is more than 5 years old
10 Posts
0
1395
sm_perl - how to catch USR1/USR2 signal?
I got a question regarding signals: I am running a perl script as a demon, that shall re-read it's configuration when receiving a USR1 or USR2 signal. Script works fine when run with the stock (machine based) perl, but will not work propperly when running with sm_perl. Sending SIGUSR2 triggers a stack dump, SIGUSR1 seems to be ignored. "Trussing" the process however shows, that the USR1 signal is delivered, but caught somewhere in another layer, maybe sm_perl itself.
Any ideas, how to proceed and make this work?
Thanks in advance,
Gunter
--
Version and machine infos:
# uname -a
SunOS asictst01 5.10 Generic_147440-27 sun4u sparc SUNW,Sun-Fire-V490
# sm_server --version
sm_server: solaris10-sparc-64/21000
SAM_SUITE: V9.1.0.0(120459), 28-Nov-2012 14:44:05 Copyright 1995-2012, EMC Corporation - Build 286
Foundation V9.1.0.0(119108), 03-Oct-2012 09:21:44 Copyright 1995-2012, EMC Corporation - Build 42
# sm_perl --version
This is perl, v5.8.8 built for sun4-solaris-thread-multi-64
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License
or the GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc
perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
# perl --version
This is perl, v5.8.8 built for sun4-solaris
Copyright 1987-2006, Larry Wall
Perl may be copied only under the terms of either the Artistic License
or the GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found onthis system using "man perl" or "perldoc
perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
gunter3
10 Posts
0
July 30th, 2014 11:00
FYI - I raised a SR and got the following answer from the service desk. I hope this is of help for those with similar demands:
"... the reason why the handlers are not being called is because sm_perl loads the platform library (libsm_sms.so) which has its own signal handlers. Ideally, the platform library should check if there are any existing handlers, and if so call them. After it has done handling the signal.
Request you to disable the platform's signal handling. This can be done by a couple of environmental variables, please follow below :
1. sm_edit bin/system/sm_perl.options file
2. Add two lines :
SM_DISABLE_SIGNAL_HANDLING=1
SM_DISABLE_EXTERNAL_SIGNAL_HANDLING=1"
I tried the suggestions above and the script running with sm_perl is now working equally to the other one. I did not check for any other side effects regarding the different signal handling.