I have some software that's been running on Linux (kernel 2.4) systems for a number of years. On the boxes we've recently upgraded to 2.6 kernels this same code now fails every time. The problem occurs when we initially call pth_sigmask() to block all the signals.
Example code: --------------------- #include <signal.h> #include <errno.h> #include <pth.h> int main (int argc, char *argv[]) { using namespace std; sigset_t ss, old_ss; cout << "Blocking signals..." << endl; sigfillset(&ss); int rc = sigprocmask(SIG_SETMASK, &ss, 0); //pth_sigmask(SIG_SETMASK, &ss, 0); cout << "Signals blocked: rc " << rc << " errno: " << errno << " - " << strerror(errno) << endl; } ---------------- Our libpth was configured with --enable-syscall-soft, so the above fails as is. GDB Output: (gdb) r Starting program: /home/lhearne/work/tmp/signals Blocking signals... Program received signal SIGSEGV, Segmentation fault. 0x00138d57 in sigprocmask () from /lib/tls/libc.so.6 (gdb) backtrace #0 0x00138d57 in sigprocmask () from /lib/tls/libc.so.6 #1 0x0097325a in pth_sigmask () from /usr/local/lib/libpth.so.20 #2 0x08048a88 in main (argc=1, argv=0xfeff17d4) at signals.cpp:16 If the pth header is excluded from above code the standard system call is made and the program runs to completion. Has anyone else come across this problem, or can anyone get the example to run on a 2.6 based system? For pth_sigmask the pth manual states "...alternatively you can also directly call sigprocmask(2), but for consistency reasons you should use this function pth_sigmask(3)." Is there anything lost by just calling sigprocmask? Ideally I like to find a pth solution that is compatible with both kernels. :-) Detail of the 2.6 system I've tested this on: Fedora Core 3 $ uname -rv 2.6.9-1.681_FC3 #1 Thu Nov 18 15:10:10 EST 2004 $ pth-config --version GNU Pth 2.0.3 (03-Dec-2004) $ gcc --version gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3) $ rpm --query glibc glibc-2.3.3-74 SuSE Enterprise $ uname -rv 2.6.5-7.111.5-smp #1 SMP Wed Nov 17 11:08:17 UTC 2004 $ pth-config --version GNU Pth 2.0.2 (12-Sep-2004) $ gcc --version gcc (GCC) 3.3.3 (SuSE Linux) $ rpm --query glibc glibc-2.3.3-98.31 Thanks for reading, - Lee Hearne ______________________________________________________________________ GNU Portable Threads (Pth) http://www.gnu.org/software/pth/ Development Site http://www.ossp.org/pkg/lib/pth/ Distribution Files ftp://ftp.gnu.org/gnu/pth/ Distribution Snapshots ftp://ftp.ossp.org/pkg/lib/pth/ User Support Mailing List [EMAIL PROTECTED] Automated List Manager (Majordomo) [EMAIL PROTECTED]