From: Pedro Alves <pedro@codesourcery.com>
To: "John David Anglin" <dave@hiauly1.hia.nrc.ca>
Cc: gdb-patches@sourceware.org
Subject: Re: ttrace: Protocal error
Date: Fri, 08 Aug 2008 20:02:00 -0000 [thread overview]
Message-ID: <200808082102.11828.pedro@codesourcery.com> (raw)
In-Reply-To: <20080808183307.12E604EBE@hiauly1.hia.nrc.ca>
You didn't mention, but I assume this also happens without my patch.
Note, I know nothing about ttrace and HP-UX.
On Friday 08 August 2008 19:33:06, John David Anglin wrote:
> While were on the subject of threads, it seems we are still not in
> a position to debug the vla6.f90 failure:
What's this test doing different?
> Breakpoint 1, perror_with_name (string=0x0) at ../../src/gdb/utils.c:847
> 847 err = safe_strerror (errno);
> (gdb) bt
> #0 perror_with_name (string=0x0) at ../../src/gdb/utils.c:847
> #1 0x000c9b08 in inf_ttrace_resume_callback (info=0x2319b0,
> arg=0x7b019048) at ../../src/gdb/inf-ttrace.c:813
> #2 0x0008b640 in iterate_over_threads (
> callback=@0x4001a70a: 0xc9a28 <inf_ttrace_resume_callback>, data=0x0)
> at ../../src/gdb/thread.c:338
> #3 0x000c9960 in inf_ttrace_resume (ptid=
> {pid = 1953788513, lwp = 1667563520, tid = 774778670}, step=1073949720,
> signal=TARGET_SIGNAL_0) at ../../src/gdb/inf-ttrace.c:847
> #4 0x000a3390 in target_resume (ptid=
> {pid = 1953788513, lwp = 1667563520, tid = 774778670}, step=0,
> signal=TARGET_SIGNAL_0) at ../../src/gdb/target.c:1789
^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^
I assume this ptid is GDB getting bogus info, right?
To be to getting to inf_ttrace_resume_callback, this has
to be (-1,0,0).
From your log:
> [New process 20069]
> [New process 20069, lwp 7087826]
> [process 20069, lwp 7087826 exited]
This should be setting the dying flag on the thread, but
it is still listed in gdb's thread table.
case TTEVT_LWP_EXIT:
if (print_thread_events)
printf_unfiltered (_("[%s exited]\n"), target_pid_to_str (ptid));
ti = find_thread_pid (ptid);
gdb_assert (ti != NULL);
((struct inf_ttrace_private_thread_info *)ti->private)->dying = 1;
inf_ttrace_num_lwps--;
ttrace (TT_LWP_CONTINUE, ptid_get_pid (ptid),
ptid_get_lwp (ptid), TT_NOPC, 0, 0);
/* If we don't return -1 here, core GDB will re-add the thread. */
ptid = minus_one_ptid;
break;
inf_ttrace_resume:
if (ptid_equal (ptid, minus_one_ptid))
{
/* Let all the other threads run too. */
iterate_over_threads (inf_ttrace_resume_callback, NULL);
iterate_over_threads (inf_ttrace_delete_dying_threads_callback, NULL);
}
Is this the first resume after that "exit" notification?
Any chance we're trying to resume a dead thread here then?
What happens when you delete the dying threads before resuming?
iterate_over_threads (inf_ttrace_delete_dying_threads_callback, NULL);
iterate_over_threads (inf_ttrace_resume_callback, NULL);
iterate_over_threads (inf_ttrace_delete_dying_threads_callback, NULL);
Hmmm, I assume not, if my sources match yours, your the program is stopped
at a syscall event:
/* Be careful not to try to gather much state about a thread
that's in a syscall. It's frequently a losing proposition. */
case TARGET_WAITKIND_SYSCALL_ENTRY:
if (debug_infrun)
fprintf_unfiltered (gdb_stdlog, "infrun:
TARGET_WAITKIND_SYSCALL_ENTRY\n");
resume (0, TARGET_SIGNAL_0);
prepare_to_wait (ecs);
return;
So, there should have already been a resume in between.
Could you check which thread got the syscall event? Is it the same
thread we fail to resume? Is it possibly to disable syscall events,
just for checking if it is related?
--
Pedro Alves
next prev parent reply other threads:[~2008-08-08 20:02 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-08 1:36 [4/7] Adjust the ttrace target (HP-UX) to always register the main thread Pedro Alves
2008-08-08 16:41 ` John David Anglin
2008-08-08 17:24 ` Pedro Alves
2008-08-08 17:49 ` John David Anglin
2008-08-08 18:34 ` ttrace: Protocal error John David Anglin
2008-08-08 20:02 ` Pedro Alves [this message]
2008-08-08 20:49 ` John David Anglin
2008-08-10 0:15 ` [4/7] Adjust the ttrace target (HP-UX) to always register the main thread Daniel Jacobowitz
2008-08-10 0:36 ` [4/7] Adjust the ttrace target (HP-UX) to always register the John David Anglin
2008-08-10 21:05 ` Pedro Alves
2008-08-10 21:16 ` John David Anglin
2008-08-10 21:04 ` John David Anglin
2008-08-14 17:55 ` Daniel Jacobowitz
[not found] <no.id>
2008-08-08 19:30 ` ttrace: Protocal error John David Anglin
2008-08-08 20:16 ` John David Anglin
2008-08-09 14:52 ` Pedro Alves
2008-08-09 15:34 ` John David Anglin
2008-08-09 18:49 ` John David Anglin
2008-08-09 22:45 ` Pedro Alves
2008-08-09 22:46 ` Pedro Alves
2008-08-09 22:51 ` Pedro Alves
2008-08-09 23:19 ` John David Anglin
2008-08-09 22:48 ` Pedro Alves
2008-08-09 14:53 ` Joel Brobecker
2008-08-09 23:40 ` John David Anglin
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=200808082102.11828.pedro@codesourcery.com \
--to=pedro@codesourcery.com \
--cc=dave@hiauly1.hia.nrc.ca \
--cc=gdb-patches@sourceware.org \
/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