Then I set REPOWERD_LOG=null for repowerd, the crash in vsscanf is gone, but a segmentation fault appears in strlen(). This time, similar to last time, seems to be something wrong in glibc locale handling. The error is in glibc source code stdlib/strtod_l.c [1], where variable 'decimal' was assigned to an invalid pointer value 0xa94153f3540003c1.
In the beginning I guess the root cause might be https:/ /lists. debian. org/debian- glibc/2007/ 04/msg00007. html . Basically vsnprintf is not a async-signal-safe function, and vsnprintf is called indirectly in a signal handler for SIGINT & SIGTERM. Full Async-signal-safe functions list is in http:// www.shrubbery. net/solaris9ab/ SUNWdev/ MTP/p37. html .
Then I set REPOWERD_LOG=null for repowerd, the crash in vsscanf is gone, but a segmentation fault appears in strlen(). This time, similar to last time, seems to be something wrong in glibc locale handling. The error is in glibc source code stdlib/strtod_l.c [1], where variable 'decimal' was assigned to an invalid pointer value 0xa94153f3540003c1.
[1]: https:/ /sourceware. org/git/ ?p=glibc. git;a=blob; f=stdlib/ strtod_ l.c;h=3d66eac70 682c430d211109c be51cc9a622d4ad 9;hb=fdfc9260b6 1d3d72541f18104 d24c7bcb0ce5ca2 #l568