Highlighted
gunter3
6 Indium

sm_perl - how to catch USR1/USR2 signal?

Jump to solution

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.

Labels (1)
0 Kudos
1 Solution

Accepted Solutions
gunter3
6 Indium

Re: sm_perl - how to catch USR1/USR2 signal?

Jump to solution

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.

0 Kudos
1 Reply
gunter3
6 Indium

Re: sm_perl - how to catch USR1/USR2 signal?

Jump to solution

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.

0 Kudos