On Wed, Jun 3, 2020 at 9:41 AM Bryan Evenson <[email protected]> wrote: > > Khem, > > > -----Original Message----- > > From: Khem Raj <[email protected]> > > Sent: Tuesday, June 2, 2020 2:20 PM > > To: Bryan Evenson <[email protected]> > > Cc: [email protected] > > Subject: Re: [yocto] Eclipse GDB setup issues; can't determine cause for > > SIGSEGV > > > > On Tue, Jun 2, 2020 at 6:52 AM Bryan Evenson <[email protected]> > > wrote: > > > > > > All, > > > > > > > > > > -----Original Message----- > > > > From: [email protected] <[email protected]> On > > > > Behalf Of Bryan Evenson via lists.yoctoproject.org > > > > Sent: Monday, June 1, 2020 4:46 PM > > > > To: Bryan Evenson <[email protected]>; > > > > [email protected] > > > > Subject: Re: [yocto] Eclipse GDB setup issues; can't determine cause > > > > for SIGSEGV > > > > > > > > All, > > > > > > > > > -----Original Message----- > > > > > From: [email protected] <[email protected]> > > > > > On Behalf Of Bryan Evenson via lists.yoctoproject.org > > > > > Sent: Monday, June 1, 2020 11:16 AM > > > > > To: [email protected] > > > > > Subject: [yocto] Eclipse GDB setup issues; can't determine cause > > > > > for > > > > SIGSEGV > > > > > > > > > > All, > > > > > > > > > > I have a AT91SAM9G25 system that has been idle for a couple years > > > > (running > > > > > morty, yocto version 2.2.1) and I am working on updating to the > > > > > latest > > > > Yocto > > > > > production branch. Before I get there, I'm trying to confirm the > > > > > old setup and I'm having problems with remote debugging. I know > > > > > there have been changes since yocto version 2.7 for debugging > > > > > support, so I want to make sure I can get the old setup to work > > > > > first prior to changing everything. I'm looking for assistance in > > > > > tracking > > down my debug issues. > > > > > > > > > > My stable production image is based off of core-image-minimal, > > > > > with a few additional packages for our proprietary applications > > > > > (proprietary > > > > applications > > > > > are written in C). I also have a development image, based off of > > > > > our production image, with the following additions: > > > > > > > > > > IMAGE_FEATURES += "package-management dev-pkgs eclipse-debug > > > > allow- > > > > > empty-password empty-root-password" > > > > > > > > > > IMAGE_INSTALL += " \ > > > > > #same additional packages as production image \ > > > > > #"-dbg" version of proprietary applications \ > > > > > gdbserver \ > > > > > " > > > > > # Strip python from the image to reduce the image size > > > > > PACKAGE_EXCLUDE = "python" > > > > > > > > > > I have the Eclipse Yocto plugin installed and it is setup to use > > > > > the SDK that I have built based on the development image. I've > > > > > confirmed that I can start > > > > a > > > > > debug session on one of our proprietary applications. I can set > > > > > breakpoints and run the debugger. However, the debugger always > > > > > stops at the first call to uuid_compare with a SIGSEGV. The last > > > > > line in the call stack states "<symbol is not available> > > > > > 0x00000000". From my understanding, the stack pointer is getting > > > > > set to NULL when uuid_compare is getting called. If I stop the > > > > > debugger and just run the application on the hardware, the > > > > > application runs without errors. I have confirmed with syslog > > > > > messages that I do not have the same NULL stack pointer issue when > > > > > I run the application outside > > > > of > > > > > the debugger. > > > > > > > > > > Any suggestions on where to start looking? I don't see any > > > > > obvious > > > > possible > > > > > causes and I don't know where to start looking for the problem. > > > > > > > > > > > > > On a whim, I changed in my code: > > > > if(uuid_compare(uuid1, uuid2) == 0) > > > > > > > > To: > > > > If(memcmp(uuid1, uuid2, 16) == 0) > > > > > > > > After this change the problematic line of code worked just fine. > > > > The debugger worked fine until I got to the next spot in my code > > > > that called uuid_compare. At the next call to uuid_compare I got > > > > the same SIGSEGV error I had before. Something is clearly a problem > > with calling uuid_compare. > > > > However, I'm using several other functions from the uuid library > > > > (uuid_is_null, uuid_parse, uuid_unparse for a few) and none of them > > > > are causing problems. I don't think it's a problem with the input > > > > parameters because I'm passing the same UUIDs to memcomp as I did to > > uuid_compare. > > > > Has anyone ever seen only one function from a library cause problems > > > > like this? > > > > > > I don't know if this is related, but I noticed that the debugger cannot > > > step > > into any library functions. For example, I tried stepping into strncpy, > > and the > > debugger stepped over the function call. I switched to assembly instruction > > stepping mode, then when I stepped into strncpy I received the message > > "No source available for strncpy@plt". I continued single stepping and was > > able to step through all the assembly code for strncpy. I then instruction > > single stepped into uuid_compare, and I was able to single step without > > issue > > until I got to the following instruction: > > > bx r12 > > > When this instruction is called, r12 is 0. I'm a little confused why > > > this library > > function call is failing in this manner (when all the input parameters to > > uuid_compare are valid), and I'm not sure why I can't source step through > > any library functions. If anyone has any suggestions on either issue, > > please > > let me know. > > > > It seems you are using thumb1 ISA, and usually, there is some sort of veneer > > code to switch from arm mode to thumb mode which might employ this kind > > of indirect jumps perhaps in e2fsprogs recipe, you can add > > INHIBIT_PACKAGE_STRIP = "1" temporarily and load the image, perhaps that > > can give you better debugging experience, but it seems there is a code-gen > > bug as it seems. > > > > Thanks for the suggestions. I tried these suggestions and it didn't help. I > replaced all the uuid_compare calls in my code and I was able to do some > debugging. But then I started having other odd problems with SIGABRT and > SIGSEGV errors at points that normally work. > > I then merged in some code from another developer which is using an older > SDK. I wasn't able to build any more and determined the makefiles and > configure needed updated (autotools based program). A simple autoreconf > didn't fix it; I had to invoke aclocal, autoconf, automake and then > autoreconf. After all these changes, I can now debug my application without > it crashing. The uuid_compare calls are working just fine and I've been able > to run the debugger and set breakpoints in many parts of my code. I don't > fully understand why it was the issue, but it appears I needed to do a more > in-depth autotools reconfiguration for debugging to work with my copy of the > SDK. >
what code did you merge and was it into layers? or your app. autoreconf helping would mean that its some pre-generated header etc. I am not sure what was causing it and not sure what fixed it > Thanks, > Bryan > > > > > > > Thanks, > > > Bryan > > > > > > > > > > > > Thanks, > > > > > Bryan > > > > > >
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#49574): https://lists.yoctoproject.org/g/yocto/message/49574 Mute This Topic: https://lists.yoctoproject.org/mt/74606807/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
