How to interpret (encoded?) gdb response
Michael Snyder
msnyder@vmware.com
Fri Aug 15 23:28:00 GMT 2008
André Pönitz wrote:
> On Thursday 14 August 2008 18:23:09 Michael Snyder wrote:
>> André Pönitz wrote:
>>> [...]
>>> - run an inferior containing a tight endless loop
>>> - attach to it with gdb -pid=<id>
>>> - run 'kill <pid>' in shell
>>> - do -exec-continue
>>>
>>> then I get:
>>>
>>> 67^running
>>> (gdb)
>>> &"Cannot access memory at address 0x7fff6ca72a4c\n"
>>> &"\240\240\354\003\n"
>>> 67^error,msg="\240\240\354\003"
>>> [...]
>> Here's the problem, I think ...
>>
>> "kill <pid>" without a signal value defaults to SIGKILL,
>> which cannot be intercepted or differed. That means that
>> the process goes away "right now".
>>
>> GDB, however, is sitting at the user prompt, thinking
>> that the process is not running. We're not expecting
>> the process to get signals when it's not running.
>
> I understand that I am doing "something nasty". But that was the
> result of stripping down some (largish) real world example. In a
> multitasking environment sometimes "nasty" things like sending
> signals to processes happen behind the scenes and I'd like to be
> able to handle such cases gracefully ;-}
>
> Of course, gdb cannot do much if the process is gone, and it nicely
> flags an error. I was just assuming that the accompanying error
> message would contain some information on what happened, but
> Daniel's suspicion of a bad pointer seems to be right...
I agree, I think gdb could probably be more proactive
about detecting that the ptraced process has disappeared
while we waited at the prompt.
More information about the Gdb
mailing list