From: Andrew V. <av...@gm...> - 2008-11-12 11:19:08
|
Hi, All. Rishi, can you attach log from strace -f ./testcases/kernel/mem/mtest07/mallocstress ? > Please find below some problem related to mallocstress testcase failing > on x86_64. Let us know if some of you have encountered this. > > ------------------------------------ > Rishi Reported: > ------------------------------------ > mallocstress testcase is failing on: > Linux 2.6.27-rc6-7-default #1 SMP 2008-09-15 10:58:05 +0200 x86_64 > x86_64 > > # ./testcases/kernel/mem/mtest07/mallocstress > Aborted > > ---Kernel Component Data--- > Stack trace output: i am attaching full strace. > <snip> > clone(child_stack=0x7fe381a96250, > flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, > parent_tidptr=0x7fe381a969e0, tls=0x7fe381a96950, child_tidptr=0x7fe381a969e0) = > 27334 > nanosleep({0, 0}, NULL) = 0 > semop(34439172, 0x7fffa7cbef00, 1) = 0 > futex(0x7fe39f2d19e0, FUTEX_WAIT, 27275, NULL <unfinished ...> > +++ killed by SIGABRT +++ > --------------------------------------- > Nagesh Sharyathi Replied: > --------------------------------------- > I was able to recreate the problem by spawning only 2 threads: > > This is what I found: > ------------------------------------------------------------------------------------ > [pid 8006] tgkill(8004, 8006, SIGABRT <unfinished ...> > [pid 8005] <... mmap resumed> ) = 0x7f8ba781b000 > [pid 8006] <... tgkill resumed> ) = 0 > [pid 8005] nanosleep({0, 0}, <unfinished ...> > [pid 8006] --- SIGABRT (Aborted) @ 0 (0) --- > Process 8006 detached > [pid 8005] <... nanosleep resumed> NULL) = 0 > [pid 8005] +++ killed by SIGABRT +++ > +++ killed by SIGABRT +++ > ------------------------------------------------------------------------------------ > > So one of the thread is sending tgkill to whole group. Need to look into glibc code to understand the problem. Test case is failing strangely while calling free() > > ================================= > for (i = 0; i < num_alloc; i++) > { > dprt(("pid[%d]: freeing ptrs[i] %p\n", getpid(), ptrs[i])); > if (ptrs[i][0] != i) { > fprintf(stderr, "pid[%d]: fail: bad sentinel value\n", getpid()); > return 1; > } > free(ptrs[i]); <== Problem area > my_yield(); > } > ================================= > > Regards-- > Subrata > > |