mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hui Zhu <teawater@gmail.com>
To: Amerigo Wang <xiyou.wangcong@gmail.com>
Cc: linux-kernel@vger.kernel.org, akpm@linux-foundation.org,
	viro@zeniv.linux.org.uk, dhowells@redhat.com
Subject: Re: [PATCH] Fix the multithread program core thread message error
Date: Wed, 1 Jul 2009 16:16:11 +0800	[thread overview]
Message-ID: <daef60380907010116h6b33d257u9cc22fc6b5138c09@mail.gmail.com> (raw)
In-Reply-To: <20090701072027.GE6076@cr0.nay.redhat.com>

>>
>>       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;
 }

  reply	other threads:[~2009-07-01  8:16 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-30  9:12 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 [this message]
2009-07-01 19:05         ` Andrew Morton
2009-07-01 19:19           ` Bill Gatliff
2009-07-03  9:48           ` Amerigo Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=daef60380907010116h6b33d257u9cc22fc6b5138c09@mail.gmail.com \
    --to=teawater@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    --cc=xiyou.wangcong@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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®