mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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®