[OE-core] [PATCH 1/1] classes/sanity: fix handling of bblayers.conf updating

Martin Jansa martin.jansa at gmail.com
Tue Apr 16 17:09:10 UTC 2013


On Fri, Apr 12, 2013 at 10:30:42PM +0100, Richard Purdie wrote:
> On Fri, 2013-04-12 at 23:10 +0200, Martin Jansa wrote:
> > On Fri, Apr 12, 2013 at 09:16:51PM +0100, Paul Eggleton wrote:
> > > Fix the fairly long-standing problem of treating a newer bblayers.conf
> > > in the same manner as an older one (reporting that it had been updated
> > > even if nothing was done). The recent work to do a reparse without
> > > having to manually re-run bitbake turned this from an annoyance into an
> > > endless loop, so it had to be fixed.
> > 
> > Is this endless loop, bitbake hanging forever while parsing or was it
> > showing something or failing soon with endless loop detected by python?
> 
> You'd see nothing at all, you'd run "bitbake X" and it would just sit
> there indefinitely in a loop.
> 
> It could be triggered by including meta-yocto but not setting
> DISTRO=poky* in a build dir where DISTRO=poky* has previously been used.

OK, so it's different than hangs I'm seeing here, because I'm still seeing them with latest oe-core

$ . ./oe-init-bitbake-build-env && bitbake my-image
Altered environment for machine at distro development (this is from oe-init-bitbake-build-env)
# and nothing else is shown after that

ps auxf (shortened paths and ascii tree)

bitbake  17625  0.0  0.0   4396   612 pts/18   S+   18:31   0:00  \_ /bin/sh -c . ./oe-init-bitbake-build-env && bitbake  my-image
bitbake  17626  0.0  0.0   4396   700 pts/18   S+   18:31   0:00     \_ /bin/sh /OE/build/oe-core/scripts/bitbake my-image
bitbake  17656  0.2  1.0 219356 168120 pts/18  S+   18:31   0:02        \_ python /OE/build/bitbake/bin/bitbake my-image
bitbake  18504  0.0  1.0 289044 166556 pts/18  Sl+  18:31   0:00           \_ python /OE/build/bitbake/bin/bitbake my-image

Not sure if there is better way to see what's going on in those python processes, here is strace:

# strace -p 17656
Process 17656 attached
wait4(18504, 

# strace -p 18504
Process 18504 attached
recvfrom(12, 

Hitting Ctrl+C with strace still running:
# strace -p 17656
Process 17656 attached
wait4(18504, 0x7fffd2abdf80, 0, NULL)   = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL, si_value={int=12337, ptr=0x3031}} ---
wait4(18504,

Process 18504 attached
recvfrom(12, 0xb773684, 8192, 0, 0, 0)  = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL, si_value={int=12337, ptr=0x3031}} ---
rt_sigreturn()                          = -1 EINTR (Interrupted system call)
futex(0xb16e5a0, FUTEX_WAIT_PRIVATE, 0, NULL

More Ctrl+C only repeats it in both processes but bitbake does not quit

One more python process is created and disowned by parent and becames child of init and dies later
bitbake  18524  0.0  1.0 289044 165128 ?       S    18:31   0:00 python /OE/build/bitbake/bin/bitbake my-image
but bitbake is still hanging until I send kill 18504 from another terminal

Process 18504:
futex(0xb16e5a0, FUTEX_WAIT_PRIVATE, 0, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL, si_value={int=12337, ptr=0x3031}} ---
rt_sigreturn()                          = -1 EINTR (Interrupted system call)
futex(0xb16e5a0, FUTEX_WAIT_PRIVATE, 0, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGTERM {si_signo=SIGTERM, si_code=SI_USER, si_pid=23837, si_uid=1026} ---
+++ killed by SIGTERM +++

Process 17656: (iirc you said that python-logging module is not safe with multiple processes and it looks like logging something)
# strace -p 17656
Process 17656 attached
wait4(18504, 0x7fffd2abdf80, 0, NULL)   = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL, si_value={int=12337, ptr=0x3031}} ---
wait4(18504, 0x7fffd2abdf80, 0, NULL)   = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGINT {si_signo=SIGINT, si_code=SI_KERNEL, si_value={int=12337, ptr=0x3031}} ---

read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 554) = 554
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\34", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 540) = 540
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2&", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 550) = 550
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\32", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 538) = 538
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2$", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 548) = 548
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2!", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 545) = 545
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2+", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 555) = 555
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2)", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 553) = 553
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\0023", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 563) = 563
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2#", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 547) = 547
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2-", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 557) = 557
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\36", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 542) = 542
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2(", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 552) = 552
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2*", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 554) = 554
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2$", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 548) = 548
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2.", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 558) = 558
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\37", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 543) = 543
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\7", 4)                  = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 519) = 519
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\37", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 543) = 543
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\7", 4)                  = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 519) = 519
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2\36", 4)                 = 4
read(4, "\0\0\2q", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 625) = 625
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2R", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 594) = 594
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2=", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 573) = 573
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2r", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 626) = 626
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2S", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 595) = 595
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2>", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 574) = 574
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2l", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 620) = 620
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\2M", 4)                   = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 589) = 589
select(5, [4], NULL, NULL, {0, 0})      = 1 (in [4], left {0, 0})
read(4, "\0\0\0028", 4)                 = 4
read(4, "\200\2clogging\nLogRecord\nq\1)\201q\2}q\3(U"..., 568) = 568
select(5, [4], NULL, NULL, {0, 0})      = 0 (Timeout)
close(6)                                = 0
close(4)                                = 0
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER, 0x2aaaaaf27cb0}, {SIG_IGN, [], SA_RESTORER, 0x2aaaaaf27cb0}, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL, [], SA_RESTORER, 0x2aaaaaf27cb0}, {0x45190f, [], SA_RESTORER, 0x2aaaaaf27cb0}, 8) = 0
close(7)                                = 0
munmap(0x2aaaaac18000, 32)              = 0
munmap(0x2aaaaac10000, 32)              = 0
munmap(0x2aaaaab78000, 32)              = 0
munmap(0x2aaaaab70000, 32)              = 0
munmap(0x2aaaaab80000, 32)              = 0
munmap(0x2aaaaab68000, 32)              = 0
close(5)                                = 0
munmap(0x2aaaaab58000, 32)              = 0
munmap(0x2aaaaab60000, 32)              = 0
close(8)                                = 0
close(9)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++


I'll put this in bug report later, but if you see what other information could be useful,
I'll add it next time I see bitbake hanging like this (it doesn't happen every time, probably more
with machine under higher load).

Happens in my gentoo chroot with
Python 2.7.3 (default, Mar 19 2013, 08:59:58) 
[GCC 4.7.2] on linux2

as well as in ubuntu-12.10 chroot with
Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2

both using latest oe-core+bitbake.
-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20130416/380e81f1/attachment-0002.sig>


More information about the Openembedded-core mailing list