i found the reason why SIGSEGV is generated
i didnt call exit(0) in the end

thanks

On Nov 17, 10:04 pm, "David Turner" <[EMAIL PROTECTED]> wrote:
> You are using arm-none-linux-gnueabi-gcc which is not compatible with the
> android toolchain.
> This kind of issue is perfectly normal and non supported.
>
> Only trivial programs may correctly work that way, more by chance that
> anything else.
>
> On Mon, Nov 17, 2008 at 1:35 PM, allstars <[EMAIL PROTECTED]> wrote:
>
> > hello world
> > i try to do a simple pthread test on android (natively)
>
> > /*========START OF CODE ===============*/
> > #include <stdio.h>
> > #include <sys/types.h>
> > #include <pthread.h>
>
> > void *hello(void *arg)
> > {
> >        printf("Hello from node %d\n", *(int *)arg);
> > }
>
> > int main(int argc, char* argv[])
> > {
> >        int n,i;
> >        pthread_t threads[2];
>
> >        n = 2;
>
> >        /* Start up thread */
> >        for (i = 0; i < n; i++)
> >        {
> >                pthread_create(&threads[i], NULL, hello, (void *)&i);
> >        }
>
> >        /* Synchronize the completion of each thread. */
> >        for (i = 0; i < n; i++)
> >        {
> >                pthread_join(threads[i],NULL);
> >        }
> >    printf("pthread_test returns \n");
> >    return 0;
> > }
> > /*===========END OF CODE=========*/
>
> > then i compile it  (pthread.c)
> > $>arm-none-linux-gnueabi-gcc -c -g pthread.c
> > $>arm-none-linux-gnueabi-ld --entry=main --dynamic-linker /system/bin/
> > linker -nostdlib -rpath /system/lib -rpath system/lib -L system/lib  -
> > lc -o pthread_test pthread.o
>
> > ./system is the directory of system image
>
> > but in pthread_join , SIGSEGV will be generated
>
> > i use strace to debug this
> > # ./strace ./pthread_test
> > execve("./pthread_test", ["./pthread_test"], [/* 10 vars */]) = 0
> > getpid()                                = 189
> > syscall_983045(0xb00169c4, 0x4990, 0xb0011030, 0, 0x1, 0xbecf6d94,
> > 0xbecf6d9c, 0xf0005, 0, 0, 0, 0, 0, 0xbecf6d60, 0xb0000dcd,
> > 0xb00015ac, 0x80000010, 0xb00169c4, 0, 0, 0, 0xeb48, 0xcd1f8, 0xcd1d0,
> > 0, 0, 0, 0, 0, 0, 0, 0) = 0
> > gettid()                                = 189
> > sigaction(SIGILL, {0xb0001211, [], SA_RESTART}, {SIG_DFL}, 0) = 0
> > sigaction(SIGABRT, {0xb0001211, [], SA_RESTART}, {SIG_DFL}, 0) = 0
> > sigaction(SIGBUS, {0xb0001211, [], SA_RESTART}, {SIG_DFL}, 0) = 0
> > sigaction(SIGFPE, {0xb0001211, [], SA_RESTART}, {SIG_DFL}, 0) = 0
> > sigaction(SIGSEGV, {0xb0001211, [], SA_RESTART}, {SIG_DFL}, 0) = 0
> > sigaction(SIGSTKFLT, {0xb0001211, [], SA_RESTART}, {SIG_DFL}, 0) = 0
> > open("libc.so", O_RDONLY|O_LARGEFILE)   = -1 ENOENT (No such file or
> > directory)
> > open("/system/lib/libc.so", O_RDONLY|O_LARGEFILE) = 3
> > lseek(3, 0, SEEK_SET)                   = 0
> > read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0`
> > \225\0\000"..., 4096) = 4096
> > lseek(3, -8, SEEK_END)                  = 227472
> > read(3, "\0\0\340\257PRE ", 8)          = 8
> > mmap2(0xafe00000, 274432, PROT_READ|PROT_EXEC, MAP_PRIVATE|
> > MAP_ANONYMOUS, -1, 0) = 0xafe00000
> > mmap2(0xafe00000, 214032, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED,
> > 3, 0) = 0xafe00000
> > mprotect(0xafe00000, 217088, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
> > mmap2(0xafe35000, 8420, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED,
> > 3, 0x35) = 0xafe35000
> > mmap2(0xafe38000, 41760, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
> > MAP_ANONYMOUS, -1, 0) = 0xafe38000
> > close(3)                                = 0
> > mprotect(0xafe00000, 217088, PROT_READ|PROT_EXEC) = 0
> > getuid32()                              = 0
> > geteuid32()                             = 0
> > open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 3
> > read(3, "%\374\353\364", 4)             = 4
> > close(3)                                = 0
> > mprotect(0x8000, 4096, PROT_READ|PROT_EXEC) = 0
> > getuid32()                              = 0
> > geteuid32()                             = 0
> > brk(0)                                  = 0x11000
> > brk(0x11000)                            = 0x11000
> > brk(0x12000)                            = 0x12000
> > mmap2(0x10000000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|
> > MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x10000000
> > mprotect(0x10000000, 4096, PROT_NONE)   = 0
> > clone(child_stack=0x100fff00, flags=CLONE_VM|CLONE_FS|CLONE_FILES|
> > CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_DETACHED) = 190
> > futex(0x100fff00, FUTEX_WAKE, 1Hello from node 0
> > )        = 1
> > mmap2(0x10000000, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|
> > MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x10000000
> > mprotect(0x10000000, 4096, PROT_NONE)   = 0
> > clone(child_stack=0x100fff00, flags=CLONE_VM|CLONE_FS|CLONE_FILES|
> > CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_DETACHED) = 191
> > futex(0x100fff00, FUTEX_WAKE, 1Hello from node 1
> > )        = 1
> > --- SIGSEGV (Segmentation fault) @ 0 (4) ---
> > sigaction(SIGUSR1, {SIG_IGN}, {SIG_DFL}, 0) = 0
> > gettid()                                = 189
> > SYS_281(0x1, 0x1, 0, 0xffffe52c, 0xb000f55c) = 3
> > SYS_283(0x3, 0xbecf69b6, 0x14, 0x1, 0x3) = 0
> > write(3, "\275\0\0\0", 4)               = 4
> > read(3, 0xbecf6a54, 1)                  = ? ERESTARTSYS (To be
> > restarted)
> > --- SIGCONT (Continued) @ 0 (0) ---
> > read(3, "", 1)                          = 0
> > close(3)                                = 0
> > sigaction(SIGSEGV, {SIG_IGN}, {0xb0001211, [], SA_RESTART}, 0) = 0
> > sigreturn()                             = ? (mask now [])
> > --- SIGSEGV (Segmentation fault) @ 0 (4) ---
> > +++ killed by SIGSEGV +++
>
> > so i would like to ask why pthread_join here will always generate
> > SIGSEGV???
>
> > thanks
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
[EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to