Comment 4 for bug 1613602

Revision history for this message
You-Sheng Yang (vicamo) wrote :

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=3d66eac70682c430d211109cbe51cc9a622d4ad9;hb=fdfc9260b61d3d72541f18104d24c7bcb0ce5ca2#l568