* [PATCH] Fix the multithread program core thread message error
@ 2009-06-30 9:12 Hui Zhu
2009-07-01 0:54 ` Amerigo Wang
0 siblings, 1 reply; 11+ messages in thread
From: Hui Zhu @ 2009-06-30 9:12 UTC (permalink / raw)
To: linux-kernel
Fix the multithread program core thread message error.
The thread message of core file is generated in
elf_dump_thread_status. The register values is set by
elf_core_copy_task_regs in this function.
static inline int elf_core_copy_task_regs(struct task_struct *t,
elf_gregset_t* elfregs)
{
return ELF_CORE_COPY_TASK_REGS(t, elfregs);
return 0;
}
If a arch doesn't define ELF_CORE_COPY_TASK_REGS, This function will do
nothing. Then the core file will not have the register message of
thread.
So add elf_core_copy_regs to set regiser values if
ELF_CORE_COPY_TASK_REGS doesn't define.
---
elfcore.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h
index 7605c5e..03ec167 100644
--- a/include/linux/elfcore.h
+++ b/include/linux/elfcore.h
@@ -125,6 +125,8 @@ static inline int elf_core_copy_task_regs(struct
task_struct *t, elf_gregset_t*
#ifdef ELF_CORE_COPY_TASK_REGS
return ELF_CORE_COPY_TASK_REGS(t, elfregs);
+#else
+ elf_core_copy_regs(elfregs, task_pt_regs(t));
#endif
return 0;
}
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH] Fix the multithread program core thread message error 2009-06-30 9:12 [PATCH] Fix the multithread program core thread message error Hui Zhu @ 2009-07-01 0:54 ` Amerigo Wang 2009-07-01 3:27 ` Hui Zhu 0 siblings, 1 reply; 11+ messages in thread From: Amerigo Wang @ 2009-07-01 0:54 UTC (permalink / raw) To: Hui Zhu; +Cc: linux-kernel Hi, Hui. On Tue, Jun 30, 2009 at 05:12:31PM +0800, Hui Zhu wrote: >Fix the multithread program core thread message error. >The thread message of core file is generated in >elf_dump_thread_status. The register values is set by >elf_core_copy_task_regs in this function. >static inline int elf_core_copy_task_regs(struct task_struct *t, > elf_gregset_t* elfregs) >{ > > return ELF_CORE_COPY_TASK_REGS(t, elfregs); > return 0; >} >If a arch doesn't define ELF_CORE_COPY_TASK_REGS, This function will do >nothing. Then the core file will not have the register message of >thread. >So add elf_core_copy_regs to set regiser values if >ELF_CORE_COPY_TASK_REGS doesn't define. You forgot your Signed-off-by line. :) Hmmm, this patch looks sane for me. But could you please send us your test program? i.e. how did you test this? Thank you! >--- > elfcore.h | 2 ++ > 1 file changed, 2 insertions(+) > >diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h >index 7605c5e..03ec167 100644 >--- a/include/linux/elfcore.h >+++ b/include/linux/elfcore.h >@@ -125,6 +125,8 @@ static inline int elf_core_copy_task_regs(struct >task_struct *t, elf_gregset_t* > #ifdef ELF_CORE_COPY_TASK_REGS > > return ELF_CORE_COPY_TASK_REGS(t, elfregs); >+#else >+ elf_core_copy_regs(elfregs, task_pt_regs(t)); > #endif > return 0; > } >-- >To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >the body of a message to majordomo@vger.kernel.org >More majordomo info at http://vger.kernel.org/majordomo-info.html >Please read the FAQ at http://www.tux.org/lkml/ ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 0:54 ` Amerigo Wang @ 2009-07-01 3:27 ` Hui Zhu 2009-07-01 3:29 ` Hui Zhu 2009-07-01 4:51 ` Amerigo Wang 0 siblings, 2 replies; 11+ messages in thread From: Hui Zhu @ 2009-07-01 3:27 UTC (permalink / raw) To: Amerigo Wang; +Cc: linux-kernel Hi Amerigo, Thanks for your reply. On Wed, Jul 1, 2009 at 08:54, Amerigo Wang<xiyou.wangcong@gmail.com> wrote: > > Hi, Hui. > > On Tue, Jun 30, 2009 at 05:12:31PM +0800, Hui Zhu wrote: >>Fix the multithread program core thread message error. >>The thread message of core file is generated in >>elf_dump_thread_status. The register values is set by >>elf_core_copy_task_regs in this function. >>static inline int elf_core_copy_task_regs(struct task_struct *t, >> elf_gregset_t* elfregs) >>{ >> >> return ELF_CORE_COPY_TASK_REGS(t, elfregs); >> return 0; >>} >>If a arch doesn't define ELF_CORE_COPY_TASK_REGS, This function will do >>nothing. Then the core file will not have the register message of >>thread. >>So add elf_core_copy_regs to set regiser values if >>ELF_CORE_COPY_TASK_REGS doesn't define. > > > You forgot your Signed-off-by line. :) Signed-off-by: Hui Zhu <hui.zhu@windriver.com> > > Hmmm, this patch looks sane for me. But could you please > send us your test program? i.e. how did you test this? > I test this issue in a arm board. My test code is: #include <stdio.h> #include <pthread.h> #include <assert.h> void td1(void * i) { while (1) { printf ("1\n"); sleep (1); } return; } void td2(void * i) { while (1) { printf ("2\n"); sleep (1); } return; } int main(int argc,char *argv[],char *envp[]) { pthread_t t1,t2; pthread_create(&t1, NULL, (void*)td1, NULL); pthread_create(&t2, NULL, (void*)td2, NULL); sleep (10); assert(0); return (0); } The follow is how to reproduce this issue: arm-xxx-gcc -g -lpthread 1.c -o 1 copy 1.c and 1 to a arm board. Goto this board. ulimit -c 1800000 ./1 # ./1 1 2 1 ... ... 1 1: 1.c:37: main: Assertion `0' failed. Aborted (core dumped) Then you can get a core file. gdb 1 core.xxx Without the patch: (gdb) info threads 3 process 909 0x00000000 in ?? () 2 process 908 0x00000000 in ?? () * 1 process 907 0x4a6e2238 in raise () from /lib/libc.so.6 You can found that the pc of 909 and 908 is 0x00000000. With the patch: (gdb) info threads 3 process 885 0x4a749974 in nanosleep () from /lib/libc.so.6 2 process 884 0x4a749974 in nanosleep () from /lib/libc.so.6 * 1 process 883 0x4a6e2238 in raise () from /lib/libc.so.6 The pc of 885 and 884 is right. Thanks, Hui ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 3:27 ` Hui Zhu @ 2009-07-01 3:29 ` Hui Zhu 2009-07-01 4:51 ` Amerigo Wang 1 sibling, 0 replies; 11+ messages in thread From: Hui Zhu @ 2009-07-01 3:29 UTC (permalink / raw) To: Amerigo Wang; +Cc: linux-kernel On Wed, Jul 1, 2009 at 11:27, Hui Zhu<teawater@gmail.com> wrote: > Hi Amerigo, > > Thanks for your reply. > > On Wed, Jul 1, 2009 at 08:54, Amerigo Wang<xiyou.wangcong@gmail.com> wrote: >> >> Hi, Hui. >> >> On Tue, Jun 30, 2009 at 05:12:31PM +0800, Hui Zhu wrote: >>>Fix the multithread program core thread message error. >>>The thread message of core file is generated in >>>elf_dump_thread_status. The register values is set by >>>elf_core_copy_task_regs in this function. >>>static inline int elf_core_copy_task_regs(struct task_struct *t, >>> elf_gregset_t* elfregs) >>>{ >>> >>> return ELF_CORE_COPY_TASK_REGS(t, elfregs); >>> return 0; >>>} >>>If a arch doesn't define ELF_CORE_COPY_TASK_REGS, This function will do >>>nothing. Then the core file will not have the register message of >>>thread. >>>So add elf_core_copy_regs to set regiser values if >>>ELF_CORE_COPY_TASK_REGS doesn't define. >> >> >> You forgot your Signed-off-by line. :) > > Signed-off-by: Hui Zhu <hui.zhu@windriver.com> I need change it to Signed-off-by: Hui Zhu <teawater@gmail.com> Sorry about it. Thanks, Hui ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 3:27 ` Hui Zhu 2009-07-01 3:29 ` Hui Zhu @ 2009-07-01 4:51 ` Amerigo Wang 2009-07-01 6:21 ` Hui Zhu 1 sibling, 1 reply; 11+ messages in thread From: Amerigo Wang @ 2009-07-01 4:51 UTC (permalink / raw) To: Hui Zhu; +Cc: Amerigo Wang, linux-kernel, akpm, viro, dhowells On Wed, Jul 01, 2009 at 11:27:41AM +0800, Hui Zhu wrote: >Hi Amerigo, > >Thanks for your reply. > >On Wed, Jul 1, 2009 at 08:54, Amerigo Wang<xiyou.wangcong@gmail.com> wrote: >> >> Hi, Hui. >> >> On Tue, Jun 30, 2009 at 05:12:31PM +0800, Hui Zhu wrote: >>>Fix the multithread program core thread message error. >>>The thread message of core file is generated in >>>elf_dump_thread_status. The register values is set by >>>elf_core_copy_task_regs in this function. >>>static inline int elf_core_copy_task_regs(struct task_struct *t, >>> elf_gregset_t* elfregs) >>>{ >>> >>> return ELF_CORE_COPY_TASK_REGS(t, elfregs); >>> return 0; >>>} >>>If a arch doesn't define ELF_CORE_COPY_TASK_REGS, This function will do >>>nothing. Then the core file will not have the register message of >>>thread. >>>So add elf_core_copy_regs to set regiser values if >>>ELF_CORE_COPY_TASK_REGS doesn't define. >> >> >> You forgot your Signed-off-by line. :) > >Signed-off-by: Hui Zhu <hui.zhu@windriver.com> > >> >> Hmmm, this patch looks sane for me. But could you please >> send us your test program? i.e. how did you test this? >> > >I test this issue in a arm board. My test code is: Thanks! Hmm, this only affects the arch which neither has CORE_DUMP_USE_REGSET nor ELF_CORE_COPY_TASK_REGS, arm is one of them, but x86 not... Could you please resend this patch with your favourite Signed-off-by and also put the reproduce steps below into your change log? P.S. Add some Cc's for more reviews, don't drop them when you resend your patch. >#include <stdio.h> >#include <pthread.h> >#include <assert.h> > >void td1(void * i) >{ > while (1) > { > printf ("1\n"); > sleep (1); > } > > return; >} > >void td2(void * i) >{ > while (1) > { > printf ("2\n"); > sleep (1); > } > > return; >} > >int >main(int argc,char *argv[],char *envp[]) >{ > pthread_t t1,t2; > > pthread_create(&t1, NULL, (void*)td1, NULL); > pthread_create(&t2, NULL, (void*)td2, NULL); > > sleep (10); > > assert(0); > > return (0); >} > >The follow is how to reproduce this issue: >arm-xxx-gcc -g -lpthread 1.c -o 1 >copy 1.c and 1 to a arm board. >Goto this board. >ulimit -c 1800000 >./1 ># ./1 >1 >2 >1 >... >... >1 >1: 1.c:37: main: Assertion `0' failed. >Aborted (core dumped) >Then you can get a core file. >gdb 1 core.xxx > >Without the patch: >(gdb) info threads > 3 process 909 0x00000000 in ?? () > 2 process 908 0x00000000 in ?? () >* 1 process 907 0x4a6e2238 in raise () from /lib/libc.so.6 >You can found that the pc of 909 and 908 is 0x00000000. > >With the patch: >(gdb) info threads > 3 process 885 0x4a749974 in nanosleep () from /lib/libc.so.6 > 2 process 884 0x4a749974 in nanosleep () from /lib/libc.so.6 >* 1 process 883 0x4a6e2238 in raise () from /lib/libc.so.6 >The pc of 885 and 884 is right. > > >Thanks, >Hui ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 4:51 ` Amerigo Wang @ 2009-07-01 6:21 ` Hui Zhu 2009-07-01 7:20 ` Amerigo Wang 2009-07-01 19:05 ` Andrew Morton 0 siblings, 2 replies; 11+ messages in thread From: Hui Zhu @ 2009-07-01 6:21 UTC (permalink / raw) To: Amerigo Wang; +Cc: linux-kernel, akpm, viro, dhowells Thanks for your help, Amerigo. Hui Fix the multithread program core thread message error. This issue just affect arch with neither has CORE_DUMP_USE_REGSET nor ELF_CORE_COPY_TASK_REGS, ARM is one of them. The thread message of core file is generated in elf_dump_thread_status. The register values is set by elf_core_copy_task_regs in this function. If a arch doesn't define ELF_CORE_COPY_TASK_REGS, The function elf_core_copy_task_regs will do nothing. Then the core file will not have the register message of thread. So add elf_core_copy_regs to set regiser values if ELF_CORE_COPY_TASK_REGS doesn't define. The following is how to reproduce this issue: cat 1.c #include <stdio.h> #include <pthread.h> #include <assert.h> void td1(void * i) { while (1) { printf ("1\n"); sleep (1); } return; } void td2(void * i) { while (1) { printf ("2\n"); sleep (1); } return; } int main(int argc,char *argv[],char *envp[]) { pthread_t t1,t2; pthread_create(&t1, NULL, (void*)td1, NULL); pthread_create(&t2, NULL, (void*)td2, NULL); sleep (10); assert(0); return (0); } arm-xxx-gcc -g -lpthread 1.c -o 1 copy 1.c and 1 to a arm board. Goto this board. ulimit -c 1800000 ./1 # ./1 1 2 1 ... ... 1 1: 1.c:37: main: Assertion `0' failed. Aborted (core dumped) Then you can get a core file. gdb 1 core.xxx Without the patch: (gdb) info threads 3 process 909 0x00000000 in ?? () 2 process 908 0x00000000 in ?? () * 1 process 907 0x4a6e2238 in raise () from /lib/libc.so.6 You can found that the pc of 909 and 908 is 0x00000000. With the patch: (gdb) info threads 3 process 885 0x4a749974 in nanosleep () from /lib/libc.so.6 2 process 884 0x4a749974 in nanosleep () from /lib/libc.so.6 * 1 process 883 0x4a6e2238 in raise () from /lib/libc.so.6 The pc of 885 and 884 is right. Signed-off-by: Hui Zhu <teawater@gmail.com> --- elfcore.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h index 7605c5e..03ec167 100644 --- a/include/linux/elfcore.h +++ b/include/linux/elfcore.h @@ -125,6 +125,8 @@ static inline int elf_core_copy_task_regs(struct task_struct *t, elf_gregset_t* #ifdef ELF_CORE_COPY_TASK_REGS return ELF_CORE_COPY_TASK_REGS(t, elfregs); +#else + elf_core_copy_regs(elfregs, task_pt_regs(t)); #endif return 0; } ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 6:21 ` Hui Zhu @ 2009-07-01 7:20 ` Amerigo Wang 2009-07-01 8:16 ` Hui Zhu 2009-07-01 19:05 ` Andrew Morton 1 sibling, 1 reply; 11+ messages in thread From: Amerigo Wang @ 2009-07-01 7:20 UTC (permalink / raw) To: Hui Zhu; +Cc: Amerigo Wang, linux-kernel, akpm, viro, dhowells On Wed, Jul 01, 2009 at 02:21:37PM +0800, Hui Zhu wrote: >Thanks for your help, Amerigo. You're welcome. > >Hui > >--- > elfcore.h | 2 ++ > 1 file changed, 2 insertions(+) > >diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h >index 7605c5e..03ec167 100644 >--- a/include/linux/elfcore.h >+++ b/include/linux/elfcore.h >@@ -125,6 +125,8 @@ static inline int elf_core_copy_task_regs(struct >task_struct *t, elf_gregset_t* > #ifdef ELF_CORE_COPY_TASK_REGS > > return ELF_CORE_COPY_TASK_REGS(t, elfregs); >+#else >+ elf_core_copy_regs(elfregs, task_pt_regs(t)); > #endif > return 0; > } Your email client eats tabs. :) Can you fix your email client or resend it with a tool like git send-email? Thanks. ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 7:20 ` Amerigo Wang @ 2009-07-01 8:16 ` Hui Zhu 0 siblings, 0 replies; 11+ messages in thread From: Hui Zhu @ 2009-07-01 8:16 UTC (permalink / raw) To: Amerigo Wang; +Cc: linux-kernel, akpm, viro, dhowells >> >> return ELF_CORE_COPY_TASK_REGS(t, elfregs); >>+#else >>+ elf_core_copy_regs(elfregs, task_pt_regs(t)); >> #endif >> return 0; >> } > > Your email client eats tabs. :) Can you fix your email client > or resend it with a tool like git send-email? > > Thanks. > Ah, sorry about it. I think the tabs was lost when I copy this code with wrong way. I try this version with myself first. It looks ok. Please help me with it. Thanks, Hui Fix the multithread program core thread message error. This issue just affect arch with neither has CORE_DUMP_USE_REGSET nor ELF_CORE_COPY_TASK_REGS, ARM is one of them. The thread message of core file is generated in elf_dump_thread_status. The register values is set by elf_core_copy_task_regs in this function. If a arch doesn't define ELF_CORE_COPY_TASK_REGS, The function elf_core_copy_task_regs will do nothing. Then the core file will not have the register message of thread. So add elf_core_copy_regs to set regiser values if ELF_CORE_COPY_TASK_REGS doesn't define. The following is how to reproduce this issue: cat 1.c #include <stdio.h> #include <pthread.h> #include <assert.h> void td1(void * i) { while (1) { printf ("1\n"); sleep (1); } return; } void td2(void * i) { while (1) { printf ("2\n"); sleep (1); } return; } int main(int argc,char *argv[],char *envp[]) { pthread_t t1,t2; pthread_create(&t1, NULL, (void*)td1, NULL); pthread_create(&t2, NULL, (void*)td2, NULL); sleep (10); assert(0); return (0); } arm-xxx-gcc -g -lpthread 1.c -o 1 copy 1.c and 1 to a arm board. Goto this board. ulimit -c 1800000 ./1 # ./1 1 2 1 ... ... 1 1: 1.c:37: main: Assertion `0' failed. Aborted (core dumped) Then you can get a core file. gdb 1 core.xxx Without the patch: (gdb) info threads 3 process 909 0x00000000 in ?? () 2 process 908 0x00000000 in ?? () * 1 process 907 0x4a6e2238 in raise () from /lib/libc.so.6 You can found that the pc of 909 and 908 is 0x00000000. With the patch: (gdb) info threads 3 process 885 0x4a749974 in nanosleep () from /lib/libc.so.6 2 process 884 0x4a749974 in nanosleep () from /lib/libc.so.6 * 1 process 883 0x4a6e2238 in raise () from /lib/libc.so.6 The pc of 885 and 884 is right. Signed-off-by: Hui Zhu <teawater@gmail.com> --- elfcore.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h index 7605c5e..03ec167 100644 --- a/include/linux/elfcore.h +++ b/include/linux/elfcore.h @@ -125,6 +125,8 @@ static inline int elf_core_copy_task_regs(struct task_struct *t, elf_gregset_t* #ifdef ELF_CORE_COPY_TASK_REGS return ELF_CORE_COPY_TASK_REGS(t, elfregs); +#else + elf_core_copy_regs(elfregs, task_pt_regs(t)); #endif return 0; } ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 6:21 ` Hui Zhu 2009-07-01 7:20 ` Amerigo Wang @ 2009-07-01 19:05 ` Andrew Morton 2009-07-01 19:19 ` Bill Gatliff 2009-07-03 9:48 ` Amerigo Wang 1 sibling, 2 replies; 11+ messages in thread From: Andrew Morton @ 2009-07-01 19:05 UTC (permalink / raw) To: Hui Zhu Cc: xiyou.wangcong, linux-kernel, viro, dhowells, Russell King, linux-arm-kernel, stable On Wed, 1 Jul 2009 14:21:37 +0800 Hui Zhu <teawater@gmail.com> wrote: > Thanks for your help, Amerigo. > > Hui > > Fix the multithread program core thread message error. > This issue just affect arch with neither has CORE_DUMP_USE_REGSET > nor ELF_CORE_COPY_TASK_REGS, ARM is one of them. > The thread message of core file is generated in > elf_dump_thread_status. The register values is set by > elf_core_copy_task_regs in this function. > If a arch doesn't define ELF_CORE_COPY_TASK_REGS, The function > elf_core_copy_task_regs will do nothing. Then the core file will > not have the register message of thread. > So add elf_core_copy_regs to set regiser values if > ELF_CORE_COPY_TASK_REGS doesn't define. > The following is how to reproduce this issue: > > ... > > Without the patch: > (gdb) info threads > 3 process 909 0x00000000 in ?? () > 2 process 908 0x00000000 in ?? () > * 1 process 907 0x4a6e2238 in raise () from /lib/libc.so.6 > You can found that the pc of 909 and 908 is 0x00000000. > With the patch: > (gdb) info threads > 3 process 885 0x4a749974 in nanosleep () from /lib/libc.so.6 > 2 process 884 0x4a749974 in nanosleep () from /lib/libc.so.6 > * 1 process 883 0x4a6e2238 in raise () from /lib/libc.so.6 > The pc of 885 and 884 is right. I'm trying to work out if we should backport this fix into earlier kernels (2.6.30.x, 2.6.29.x, etc). I'd have though that having gdb produce crap for all the threads would be fairly irritating to ARM developers and hence we should backport this. But perhaps it doens't affect many people, dunno. What do poeple think? ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 19:05 ` Andrew Morton @ 2009-07-01 19:19 ` Bill Gatliff 2009-07-03 9:48 ` Amerigo Wang 1 sibling, 0 replies; 11+ messages in thread From: Bill Gatliff @ 2009-07-01 19:19 UTC (permalink / raw) To: Andrew Morton Cc: Hui Zhu, xiyou.wangcong, linux-kernel, viro, dhowells, Russell King, linux-arm-kernel, stable Andrew Morton wrote: > > I'd have though that having gdb produce crap for all the threads would > be fairly irritating to ARM developers and hence we should backport > this. But perhaps it doens't affect many people, dunno. > > What do poeple think? > Not backporting would provide an incentive for people to step up to a more modern kernel. :) One can always backport later if the situation really requires it. I say let it be. b.g. -- Bill Gatliff bgat@billgatliff.com ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH] Fix the multithread program core thread message error 2009-07-01 19:05 ` Andrew Morton 2009-07-01 19:19 ` Bill Gatliff @ 2009-07-03 9:48 ` Amerigo Wang 1 sibling, 0 replies; 11+ messages in thread From: Amerigo Wang @ 2009-07-03 9:48 UTC (permalink / raw) To: Andrew Morton Cc: Hui Zhu, xiyou.wangcong, linux-kernel, viro, dhowells, Russell King, linux-arm-kernel, stable On Wed, Jul 01, 2009 at 12:05:19PM -0700, Andrew Morton wrote: >On Wed, 1 Jul 2009 14:21:37 +0800 >Hui Zhu <teawater@gmail.com> wrote: > >> Thanks for your help, Amerigo. >> >> Hui >> >> Fix the multithread program core thread message error. >> This issue just affect arch with neither has CORE_DUMP_USE_REGSET >> nor ELF_CORE_COPY_TASK_REGS, ARM is one of them. >> The thread message of core file is generated in >> elf_dump_thread_status. The register values is set by >> elf_core_copy_task_regs in this function. >> If a arch doesn't define ELF_CORE_COPY_TASK_REGS, The function >> elf_core_copy_task_regs will do nothing. Then the core file will >> not have the register message of thread. >> So add elf_core_copy_regs to set regiser values if >> ELF_CORE_COPY_TASK_REGS doesn't define. >> The following is how to reproduce this issue: >> >> ... >> >> Without the patch: >> (gdb) info threads >> 3 process 909 0x00000000 in ?? () >> 2 process 908 0x00000000 in ?? () >> * 1 process 907 0x4a6e2238 in raise () from /lib/libc.so.6 >> You can found that the pc of 909 and 908 is 0x00000000. >> With the patch: >> (gdb) info threads >> 3 process 885 0x4a749974 in nanosleep () from /lib/libc.so.6 >> 2 process 884 0x4a749974 in nanosleep () from /lib/libc.so.6 >> * 1 process 883 0x4a6e2238 in raise () from /lib/libc.so.6 >> The pc of 885 and 884 is right. > Thanks for taking this. >I'm trying to work out if we should backport this fix into earlier >kernels (2.6.30.x, 2.6.29.x, etc). > >I'd have though that having gdb produce crap for all the threads would >be fairly irritating to ARM developers and hence we should backport >this. But perhaps it doens't affect many people, dunno. > >What do poeple think? This doesn't affect many platforms, only the platforms which has _neither_ CORE_DUMP_USE_REGSET nor ELF_CORE_COPY_TASK_REGS. I haven't checked all, just x86 and arm, x86 doesn't, arm does. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-07-03 9:46 UTC | newest] Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-06-30 9:12 [PATCH] Fix the multithread program core thread message error Hui Zhu 2009-07-01 0:54 ` Amerigo Wang 2009-07-01 3:27 ` Hui Zhu 2009-07-01 3:29 ` Hui Zhu 2009-07-01 4:51 ` Amerigo Wang 2009-07-01 6:21 ` Hui Zhu 2009-07-01 7:20 ` Amerigo Wang 2009-07-01 8:16 ` Hui Zhu 2009-07-01 19:05 ` Andrew Morton 2009-07-01 19:19 ` Bill Gatliff 2009-07-03 9:48 ` Amerigo Wang
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®