Re: Solaris - procfs: couldn't find pid 32748 (kernel thread 21) in procinfo list

Petr Sumbera
2020-06-02T07:34:19Z

On 01.06.2020 21:12, Pedro Alves wrote:
> On 6/1/20 12:39 PM, Petr Sumbera via Gdb wrote:
>> The issue seems to be that the LWP exits and the status->kind is set to TARGET_WAITKIND_SPURIOUS:
>>
>> https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=gdb/procfs.c;h=f6c6b0e71c16224d3e7345ca09e011cdcf06349a;hb=HEAD#l2214
>>
>> But instantly it's added into the list again here:
>>
>> https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=gdb/infrun.c;h=95fc3bfe45930b53c33cb4de165db9c070449ad8;hb=HEAD#l5200
>>
>> But there is no longer such LWP in /proc.
>>
>> Any suggestion?

Thanks for looking at it!

> Either:
>
> - replace TARGET_WAITKIND_SPURIOUS with TARGET_WAITKIND_THREAD_EXITED, or,

With this I'm getting:

[LWP 21 exited]
[LWP 21 exited]
/builds/psumbera/userland-gdb-procinfo/components/gdb/gdb-9.2/gdb/thread.c:459:
internal-error: void delete_thread_1(thread_info*, bool): Assertion `thr
!= nullptr' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

> - replace
> status->kind = TARGET_WAITKIND_SPURIOUS;
> return retval;
> with
> goto wait_again;
> instead.

and with this:

[LWP 20 exited]
[LWP 20 exited]
/builds/psumbera/userland-gdb-procinfo/components/gdb/gdb-9.2/gdb/thread.c:459:
internal-error: void delete_thread_1(thread_info*, bool): Assertion `thr
!= nullptr' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.

--

Note that in both cases there are TWO exits for one LWP. But LWP numbers
differ.

Any other comment?

Thanks!

Petr