tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
NPTL linux emulation thread crash remains unnoticed
Hi,
I'm facing an annoying problem with NPTL compat linux emulation. To
summarize, when a thread crash its failure remain unnoticed from all
other threads. At that time, a process can stand forever waiting for a
dead thread ... Unfortunately, i already encountered this one while
running some java apps :(
For now, i don't see a way to fix it; and would appreciate some help
...
Thanks in advance.
NB: The attached code illustrate that behaviour (replace the
`sleep(5)' call with an infinite loop, and this app will wait forever
...).
--
Nicolas Joly
Biological Software and Databanks.
Institut Pasteur, Paris.
#include <err.h>
#include <pthread.h>
#include <signal.h>
#include <unistd.h>
static void *thr_sigsegv(void *arg) {
char *addr = 0x0;
sleep(1);
*addr = 1;
return NULL; }
static void *thr_loop(void *arg) {
sleep(5);
return NULL; }
int main() {
int res;
pthread_t thr1, thr2;
res = pthread_create(&thr1, NULL, thr_sigsegv, NULL);
if (res != 0)
errx(1, "pthread_create failed");
res = pthread_create(&thr2, NULL, thr_loop, NULL);
if (res != 0)
errx(1, "pthread_create failed");
res = pthread_join(thr1, NULL);
if (res != 0)
errx(1, "pthread_join failed");
res = pthread_join(thr2, NULL);
if (res != 0)
errx(1, "pthread_join failed");
return 0; }
Home |
Main Index |
Thread Index |
Old Index