From: richard.purdie@linuxfoundation.org
To: ChenQi <Qi.Chen@windriver.com>,
"openembedded-core@lists.openembedded.org"
<openembedded-core@lists.openembedded.org>
Subject: Re: gdb failure on simplest hello world program -- oe-selftest
Date: Fri, 28 Dec 2018 16:31:19 +0000 [thread overview]
Message-ID: <cc3405fd6c7f18dfa7dc9f545ae33e4515b7b856.camel@linuxfoundation.org> (raw)
In-Reply-To: <298dd0b5-f2f8-23dc-3a0d-cf05958e038c@windriver.com>
On Fri, 2018-12-28 at 17:49 +0800, ChenQi wrote:
> On 12/26/2018 07:06 PM, richard.purdie@linuxfoundation.org wrote:
> > On Wed, 2018-12-26 at 10:09 +0800, ChenQi wrote:
> > > Hi All,
> > >
> > > 'oe-selftest -r package.PackageTests.test_gdb_hardlink_debug'
> > > fails.
> > > I did the tests on both my Fedora27 and ubuntu16.04 servers. They
> > > both
> > > failed.
> > > I can also reproduce this issue manually.
> > >
> > > I did some investigation. No clue how to fix this it. So I want
> > > to seek
> > > help from community.
> > >
> > > Below is some output from oe-selftest.
> > > [snip]
> > > 2018-12-26 09:27:58,440 - oe-selftest - INFO -
> > > test_gdb_hardlink_debug
> > > (package.PackageTests)
> > > 2018-12-26 09:37:55,333 - oe-selftest - INFO - gdbtest
> > > /usr/bin/hello1
> > > 2018-12-26 09:37:59,904 - oe-selftest - ERROR - GDB result:
> > > 1: Reading symbols from /usr/bin/hello1...Reading symbols from
> > > /usr/bin/.debug/hello4...done.
> > > done.
> > > (gdb) Breakpoint 1 at 0x1060: file /usr/include/bits/stdio2.h,
> > > line 107.
> > > (gdb) Starting program: /usr/bin/hello1
> > >
> > > Breakpoint 1, main () at /usr/include/bits/stdio2.h:107
> > > 107 /usr/include/bits/stdio2.h: No such file or directory.
> > > (gdb) Continuing.
> > > Hello World!
> > > [Inferior 1 (process 312) exited normally]
> > > (gdb)
> > > 2018-12-26 09:38:00,907 - oe-selftest - INFO - ... FAIL
> > > [snip]
> > >
> > > The hello world problem is as follows.
> > > $ cat
> > > meta-selftest/recipes-test/selftest-hardlink/selftest-
> > > hardlink/hello.c
> > > #include <stdio.h>
> > >
> > > int main() {
> > > printf("Hello World!\n");
> > > }
> > >
> > > Some extra information:
> > > 1. Remove '-O2' or '-D_FORTIFY_SOURCE=2', and it works correctly.
> > > 2. Adding some system call like daemon(0,0) before printf also
> > > works.
> > > 3. Reverting poky repo to
> > > 1c048479af7cc98e30f9a33d1f3bef03711544aa,
> > > which adds this selftest case, does not work. It still fails.
> > > 4. Hongxu confirms that things work on his host.
> > > 5. I also don't see failure about this test case on yocto's
> > > autobuilder.
> > >
> > > Could somebody help to provide some suggestions?
> >
> > This is strange and there must be some difference between your
> > configuration and what what we test on the autobuilder or on
> > Hongxu's
> > setup.
>
> Hi Richard,
>
> I have talked with Hongxu and we can now both confirm that there does
> exist some problem.
>
> > Which DISTRO and MACHINE are you using?
>
> DISTRO is poky
> MACHINE is qemux86.
>
> It seems that if MACHINE is qemux86-64, the test case could pass. But
> that's just because the test case only checks 'Breakpoint 1, main ()
> at hello.c:4'. See the console output below.
> (gdb) b main
> Breakpoint 1 at 0x1050: file /usr/include/bits/stdio2.h, line 107.
> (gdb) r
> Starting program: /usr/bin/hello1
>
> Breakpoint 1, main () at hello.c:4
> 4 printf("Hello World!\n");
> (gdb) c
> Continuing.
> Hello World!
> [Inferior 1 (process 156) exited normally]
> (gdb) q
>
> Even in this case, the 'b main' does not give correct result. The
> test case passes because 'Breakpoint 1, main () at hello.c:4' is
> there.
>
> On qemux86, we have:
> (gdb) Breakpoint 1 at 0x1060: file /usr/include/bits/stdio2.h, line
> 107.
> (gdb) Starting program: /usr/bin/hello1
>
> Breakpoint 1, main () at /usr/include/bits/stdio2.h:107
> 107 /usr/include/bits/stdio2.h: No such file or directory.
> (gdb) Continuing.
> Hello World!
> [Inferior 1 (process 156) exited normally]
> (gdb)
>
> > I think the key to resolving this is will be to understanding how
> > to
> > reproduce it...
>
> Two ways to reproduce the problem:
>
> I) reproduce it via oe-selftest
> 1) . oe-init-build-env build-selftest
> 2) SANITY_TESTED_DISTROS = ""
> 3) oe-selftest -r package.PackageTests.test_gdb_hardlink_debug
>
> II) reproduce it manually
> 1) add meta-selftest to bblayers.conf
> 2) IMAGE_INSTALL_append = " selftest-hardlink selftest-hardlink-dbg
> selftest-hardlink-gdb"
> 3) bitbake core-image-minimal
> 4) On target:
> gdb /usr/bin/hello1
> (gdb) b main
I confirmed I could also reproduce it. We've just been lucky with the
configuration the autobuilder tests.
I think we need to improve the test case. Does installing the libc
headers/dev package so that stdio2.h is there help?
Cheers,
Richard
next prev parent reply other threads:[~2018-12-28 16:31 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-26 2:09 gdb failure on simplest hello world program -- oe-selftest ChenQi
2018-12-26 11:06 ` richard.purdie
2018-12-28 9:49 ` ChenQi
2018-12-28 16:31 ` richard.purdie [this message]
2018-12-28 17:09 ` Khem Raj
2018-12-29 3:26 ` ChenQi
2019-01-07 2:18 ` ChenQi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cc3405fd6c7f18dfa7dc9f545ae33e4515b7b856.camel@linuxfoundation.org \
--to=richard.purdie@linuxfoundation.org \
--cc=Qi.Chen@windriver.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox