A quick glance at the source for Sys::Syslog shows that somebody needs to call closelog_xs() not close_xs().
Perhaps your Syslog.pm file is from a different version than your Syslog dynamic library (.so or .dll file)? Or perhaps you didn't install the dynamic library and the module brokenly doesn't notice?
The Changes file notes "[BUGFIX] CPAN-RT#21516: disconnect_log() now correctly calls closelog_xs()" at release 0.19 so perhaps you just need to upgrade.
| [reply] [d/l] |
But, all test scripts work without errors in same system.
| [reply] |
I bet your test scripts do not define SIG{__DIE__}, and your production script does.
I just a SIG{__DIE__} handler to an old script, and suddenly I started getting the close_xs error. I added "return if $^S;" to the top of my handler, and the issue went away.
At least with Syslog.pm version 0.18, the close_xs call is made within an eval.
| [reply] |
Perhaps you could run your program in debugger mode and set a breakpoint in the routine that prints the error message? (I'm assuming the error comes from somewhere in the insides of error or warning, but I've never done any spelunking there, so I have no hints for you there....)
...roboticus
| [reply] |