Re: patch related to SIGSEGV handling in multiple threads and hung threads

From: Robert Hancock
Date: Fri May 15 2009 - 21:15:49 EST


Sudarshan Soma wrote:
Hi ,
I have a program which will create multiple threads. One of the thread
receives SIGSEGV and it prints stacktrace in its handler and calls
_exit(-1). The call to exit wont terminate all threads in a process
and hence thread hangs here. This causes resouce leaks and other
problems. It is seen only on linux 2.4.20.

For printing stacktrace it uses
__builtin_return_address and __builtin_frame_address


The same program works fine on linux 2.6.26 kernel. It will exit the
whole process when one of its thread dies as above.


Please let me know the patch details or any workaround, if any. This
is a bit urgent, so please let me know for any pointers , if any

Thanks and Best Regards,
Pavan.

That doesn't seem surprising, the old LinuxThreads thread implementation normally used with the 2.4 kernels was pretty poor. However it would likely be better to re-raise the signal rather than trying to exit out of the signal handler.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/