[OE-core] [PATCH 1/1] Enhancements to allow core file debugging to work properly from devices

Brian Lloyd blloyd at familyhonor.net
Sun Nov 3 16:25:17 UTC 2013


Thank you for the interest.

Personally, I wouldn't mind just adding gcore to the base package, as it
isn't very large.  However, it really is a support script that isn't
necessary for gdb or gdb-server.  It does make testing the other part of
the patch easier, though.  But as it isn't strictly necessary, I opted
to let people opt in or out of having it.
I am hoping in the future there will be a way to view available packages
so end users can browse a list and add things without having to have
pre-knowledge that it exists to go looking for it.

I do not think the -dbg symbols should be a requirement of the gcore
package.  It wasn't while using gcore that I found the missing
dependency, but actually trying to analyze crash dumps created with gdb
installed on the device and a segfaulting multi-threaded program.  All
core files produced would have no more than one usable thread's data in
it, and it never seemed to be from the crashing thread.  OS level crash
dumps and gdb debugging of the application both were not properly
functional until those symbols were placed on the device, after which
both worked.  Therefore, it seems appropriate to place the dependency
against the gdb package as it fixes a defect with the program installed
by that package.  While I haven't been using gdb-server on the device,
the research I did pointed to that program also needing those symbols,
so the dependency was added there too.

As I have never used a system that didn't have gdb installed, I am not
sure whether core dumps can be generated without the debugger installed.
If they can, perhaps the eglibc package itself should be made NO_STRIP
or else eglibc made to recommend it's own debug symbols.  I don't really
like the no strip idea, as stripped binaries are smaller and thus faster
to load and these symbols are not needed very often, so why force them
to be loaded all the time, but it is an option.



As far as testing this, I could make a small multi-threaded application
that intentionally dereferences a null pointer in one of 4 threads
spawned.  That can show the broken nature of gdb core generation without
the thread library symbols.  If this is needed, I will put one together
and just reply here that it can be pulled from the poky-contrib
repository.  I found and resolved the problem while working on a project
my company is not yet ready to release.

However, if you just want to see that gdb doesn't handle threads
properly, you can just pick a multi-threaded program, do a core dump
(the gcore script makes this trivial), and then load the core file in a
debugger on the development system.  Even though the development system
has the symbols, that core won't be readable except for one thread.

 
I will do another patch fixing the commit message and incorporating
improvements we identify during this discussion.

Brian


On Fri, 2013-11-01 at 09:32 -0700, Khem Raj wrote:

> 
> 
> On Friday, November 1, 2013, Burton, Ross wrote:
> 
>         On 31 October 2013 06:54, blloyd <blloyd at familyhonor.net>
>         wrote:
>         > +FILES_gcore = "${bindir}/gcore"
>         
>         Why can't this script just be added to the gdb package?
>         
> 
> 
> actually if we have it as a separate package then all those new
> rrcommends baggage can be added to gcore package instead of gdb proper
>  
>         
>         
>         Ross
>         _______________________________________________
>         Openembedded-core mailing list
>         Openembedded-core at lists.openembedded.org
>         http://lists.openembedded.org/mailman/listinfo/openembedded-core


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20131103/d6f5c1c3/attachment-0002.html>


More information about the Openembedded-core mailing list