Another reproducer:
# cat test2.c #include <pthread.h> #include <stdio.h>
void *threadfn(void *ptr) { return NULL; }
int main(int argc, char **argv) { pthread_t thread; pthread_create(&thread, NULL, &threadfn, NULL); pthread_join(thread, NULL); return 0; }
# arm-linux-gnueabihf-gcc -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 -static test2.c
# strace -n -f /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 ./a.out ... [pid 3205] [ 338] set_robust_list(0xf7b3180c, 12 <unfinished ...>
[pid 3204] [ 240] <... futex resumed>) = -1 ENOSYS (Function not implemented)
BOOM!
[pid 3205] [ 338] <... set_robust_list resumed>) = 0 [pid 3204] [ 146] writev(2, [{iov_base="The futex facility returned an u"..., iov_len=54}], 1The futex facility returned an unexpected error code. <unfinished ...> [pid 3205] [ 175] rt_sigprocmask(SIG_SETMASK, [], <unfinished ...> [pid 3204] [ 146] <... writev resumed>) = 54 [pid 3205] [ 175] <... rt_sigprocmask resumed>NULL, 8) = 0 [pid 3204] [ 192] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 <unfinished ...> [pid 3205] [ 175] rt_sigprocmask(SIG_BLOCK, ~[RT_1], <unfinished ...> [pid 3204] [ 192] <... mmap2 resumed>) = 0xf7330000 [pid 3205] [ 175] <... rt_sigprocmask resumed>NULL, 8) = 0 [pid 3204] [ 175] rt_sigprocmask(SIG_UNBLOCK, [ABRT], <unfinished ...> [pid 3205] [ 220] madvise(0xf7331000, 8372224, MADV_DONTNEED <unfinished ...> [pid 3204] [ 175] <... rt_sigprocmask resumed>NULL, 8) = 0 [pid 3205] [ 220] <... madvise resumed>) = 0 [pid 3205] [ 1] exit(0 <unfinished ...> [pid 3204] [ 224] gettid( <unfinished ...> [pid 3205] [ 1] <... exit resumed>) = ? [pid 3205] [ 1] +++ exited with 0 +++ [ 224] <... gettid resumed>) = 3204 [ 20] getpid() = 3204 [ 268] tgkill(3204, 3204, SIGABRT) = 0 [ 268] --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=3204, si_uid=0} --- [ 268] +++ killed by SIGABRT (core dumped) +++
Another reproducer:
# cat test2.c
#include <pthread.h>
#include <stdio.h>
void *threadfn(void *ptr)
{
return NULL;
}
int main(int argc, char **argv) create( &thread, NULL, &threadfn, NULL); join(thread, NULL);
{
pthread_t thread;
pthread_
pthread_
return 0;
}
# arm-linux- gnueabihf- gcc -D_FILE_ OFFSET_ BITS=64 -D_TIME_BITS=64 -static test2.c
# strace -n -f /usr/arm- linux-gnueabihf /lib/ld- linux-armhf. so.3 ./a.out list(0xf7b3180c , 12 <unfinished ...>
...
[pid 3205] [ 338] set_robust_
[pid 3204] [ 240] <... futex resumed>) = -1 ENOSYS (Function not implemented)
BOOM!
[pid 3205] [ 338] <... set_robust_list resumed>) = 0 SIG_SETMASK, [], <unfinished ...> PROT_WRITE, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0 <unfinished ...> SIG_BLOCK, ~[RT_1], <unfinished ...> SIG_UNBLOCK, [ABRT], <unfinished ...>
[pid 3204] [ 146] writev(2, [{iov_base="The futex facility returned an u"..., iov_len=54}], 1The futex facility returned an unexpected error code.
<unfinished ...>
[pid 3205] [ 175] rt_sigprocmask(
[pid 3204] [ 146] <... writev resumed>) = 54
[pid 3205] [ 175] <... rt_sigprocmask resumed>NULL, 8) = 0
[pid 3204] [ 192] mmap2(NULL, 4096, PROT_READ|
[pid 3205] [ 175] rt_sigprocmask(
[pid 3204] [ 192] <... mmap2 resumed>) = 0xf7330000
[pid 3205] [ 175] <... rt_sigprocmask resumed>NULL, 8) = 0
[pid 3204] [ 175] rt_sigprocmask(
[pid 3205] [ 220] madvise(0xf7331000, 8372224, MADV_DONTNEED <unfinished ...>
[pid 3204] [ 175] <... rt_sigprocmask resumed>NULL, 8) = 0
[pid 3205] [ 220] <... madvise resumed>) = 0
[pid 3205] [ 1] exit(0 <unfinished ...>
[pid 3204] [ 224] gettid( <unfinished ...>
[pid 3205] [ 1] <... exit resumed>) = ?
[pid 3205] [ 1] +++ exited with 0 +++
[ 224] <... gettid resumed>) = 3204
[ 20] getpid() = 3204
[ 268] tgkill(3204, 3204, SIGABRT) = 0
[ 268] --- SIGABRT {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=3204, si_uid=0} ---
[ 268] +++ killed by SIGABRT (core dumped) +++