This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Fwd: [Fwd: Caught signal 9 in core file ????]]


Hi Andrew,

> Something that has been kicking around the GDB list but is really a 
> BFD problem.  Anyone want to grab this and run with it?  I don't
> know enough about core dumps to do the job myself.

Sadly neither do I.  The patch however looks wrong to me.  With the
patch applied, the code looks like this:

>         offset   = offsetof (prstatus_t, pr_reg);
>         memcpy (&prstat, note->descdata, sizeof (prstat));
>   
> !       if (elf_tdata (abfd)->core_signal == 0)
> ! 	    elf_tdata (abfd)->core_signal = prstat.pr_cursig;
>         elf_tdata (abfd)->core_pid = prstat.pr_pid;
>   
>         /* pr_who exists on:

So it seem that if core_signal has already been set (from a previous
thread ?) then it will not be overwritten.  But the process ID will be
changed, so now you have a signal and a PID that do not match...

I can see why you would want to preserve the signal, but shouldn't you
also preserve the PID (and any other core related data) as well ?  In
fact isn't this really a multithreading problem, with a single BFD
structure being used to represent multiple (potential) thread cores ?

Cheers
        Nick



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]