Bug 1633 - [0.9.32-git regression] build problem: infinite loop spawning 'make'
Summary: [0.9.32-git regression] build problem: infinite loop spawning 'make'
Status: RESOLVED FIXED
Alias: None
Product: uClibc
Classification: Unclassified
Component: Other (show other bugs)
Version: 0.9.32
Hardware: Other Linux
: P3 normal
Target Milestone: 0.9.32
Assignee: Carmelo Amoroso
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-04-25 08:49 UTC by Douglas
Modified: 2010-04-27 15:20 UTC (History)
1 user (show)

See Also:
Host: powerpc-gnu-linux-uclibc
Target: powerpc-gnu-linux-uclibc
Build: powerpc-gnu-linux-uclibc


Attachments
uClibc .config file I used for all these builds (5.50 KB, text/plain)
2010-04-25 10:00 UTC, Douglas
Details
Proposed patch (1.16 KB, patch)
2010-04-25 14:20 UTC, Carmelo Amoroso
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Douglas 2010-04-25 08:49:32 UTC
I tried to build 0_9_30_rc3-995-gcce1105 (it's from git describe, something is wrong with your tags, full commit sha1 is cce1105f017744ad2d6b7b86d8a3160637bebea1), but got a problem. Without V=1 make halts after " GEN include/bits/sysnum.h", lasts very long and after some time causes my system to freeze entirely. With V=1, it prints a lot of make one-liners:
make
make
make
make
(hundreds of them)

make processes continue to spawn, load average increases (I stopped it at load average: 184.27, 180.19, 78.10)
$ ps -A | grep make | wc -l
2602

On ^C, I got 2609 messages:
 make[2608]: *** [pregen-headers] Interrupt
 ...
 make[1]: *** [pregen-headers] Interrupt
 make: *** [pregen-headers] Interrupt

I did git log searching for 'pregen' and found the possibly related commits.  Reverting 718dcdc32bc831b2c141b020124501515afb9adc shows no success.

Then I git bisected repository and got:

046035ecde92262d96eff2192ba3cda716f04909 is the first bad commit
commit 046035ecde92262d96eff2192ba3cda716f04909
Author: Khem Raj <raj.khem@gmail.com>
Date:   Tue Feb 23 16:21:18 2010 -0800

    pregen: Fix the parallel build problem in pregen target

    * pregen-headers really need the headers to get themselves generated.
      so we create explicit dependency and invoke make as an action on
      pregen. This fixes the parallel build issue for better.

    Signed-off-by: Khem Raj <raj.khem@gmail.com>

git bisect log:

git bisect start
# bad: [cce1105f017744ad2d6b7b86d8a3160637bebea1] change ABI_VERSION back to just include the major number
git bisect bad cce1105f017744ad2d6b7b86d8a3160637bebea1
# good: [1f5c73c9f8a98b1d2a35cea868a585c97ab0e436] order headers before pregen-headers
git bisect good 1f5c73c9f8a98b1d2a35cea868a585c97ab0e436
# bad: [f10d127d36ada5b202cdea521e61b05522beb192] Merge commit 'origin/master' into nptl
git bisect bad f10d127d36ada5b202cdea521e61b05522beb192
# good: [abdbaa897b3d7b5b72c8521a38aa84cada242837] prettify make clean
git bisect good abdbaa897b3d7b5b72c8521a38aa84cada242837
# bad: [c3af26045aa44286482fbfe93097f24b48cfb6a3] nptl needs stdio futexes enabled.
git bisect bad c3af26045aa44286482fbfe93097f24b48cfb6a3
# good: [2864786ad884369ab5397be864e9f43d32bc2726] bump version to 0.9.32-git
git bisect good 2864786ad884369ab5397be864e9f43d32bc2726
# bad: [ef18cfe8ebab25f5ef92e81956f50e2dc57df602] pregen-headers: Add new target which depends on headers.
git bisect bad ef18cfe8ebab25f5ef92e81956f50e2dc57df602
# bad: [046035ecde92262d96eff2192ba3cda716f04909] pregen: Fix the parallel build problem in pregen target
git bisect bad 046035ecde92262d96eff2192ba3cda716f04909
# good: [2a0393652f0d2157fcfb81a1bf38c7f775182e49] get rid of extra variables for nptl pregen altogether
git bisect good 2a0393652f0d2157fcfb81a1bf38c7f775182e49
Comment 1 Douglas 2010-04-25 10:00:19 UTC
Created attachment 1567 [details]
uClibc .config file I used for all these builds
Comment 2 Carmelo Amoroso 2010-04-25 14:07:37 UTC
Hi,
the problem is real, and occurs when pregen-headers-y is empty.
Working to fix.
Comment 3 Carmelo Amoroso 2010-04-25 14:20:36 UTC
Created attachment 1573 [details]
Proposed patch

Hi,
please git a try with this patch and let us to know. It worked for me.
Comment 4 Douglas 2010-04-25 15:06:51 UTC
Carmelo Amoroso , tried your patch against the latest current git maaster (0_9_30_rc3-998-g50d664a; full commit sha1 is 50d664a757b7a5ef1fd536ec00ea552ad9290315) and... It builds okay!


Comment 5 Douglas 2010-04-25 15:21:54 UTC
But... not really so well, because

rm -f lib/libc.so lib/libc.so.0 lib/libuClibc-0.9.32-git.so
gcc -Wl,-EB -shared -Wl,--warn-common -Wl,--warn-once -Wl,-z,combreloc -Wl,-z,relro -Wl,--hash-style=gnu -Wl,-z,defs -Wl,-s   -Wl,-init,__uClibc_init -Wl,-soname=libc.so.0 -nostdlib -o lib/libuClibc-0.9.32-git.so  -Wl,--whole-archive libc/libc_so.a -Wl,--no-whole-archive ./lib/interp.os ./lib/ld-uClibc.so.0 ./lib/uclibc_nonshared.a /usr/lib/gcc/powerpc-gnu-linux-uclibc/4.4.3/libgcc.a 
libc/libc_so.a(opendir.os): In function `opendir':
opendir.c:(.text+0x154): undefined reference to `__fcntl_nocancel'
collect2: ld returned 1 exit status
make: *** [lib/libc.so] Error 1

But this is definitely an another bug.
Comment 6 Austin Foxley 2010-04-25 16:34:37 UTC
Hey Doug,

The PPC nptl support has not been merged yet, so there are some missing functions that are affecting even your non NPTL build. We'll try to get that merged in this week to fix this.
Comment 7 Carmelo Amoroso 2010-04-25 17:52:32 UTC
(In reply to comment #4)
> Carmelo Amoroso , tried your patch against the latest current git maaster
> (0_9_30_rc3-998-g50d664a; full commit sha1 is
> 50d664a757b7a5ef1fd536ec00ea552ad9290315) and... It builds okay!
> 

That's fine, so the original issue have been fixed. Regarding the other problem you encountered, refer to Austin's comment #6.
Comment 8 Austin Foxley 2010-04-26 05:11:38 UTC
Hey Doug,

I just pushed a fix for your __fcntl_nocancel problem, go ahead and give it a try. If you run into more problems, please file a new bug.

Thanks!
Comment 9 Douglas 2010-04-27 15:20:43 UTC
Just single well ignorable waring now:

  CC libc/misc/dirent/opendir.os
libc/misc/dirent/opendir.c: In function 'opendir':
libc/misc/dirent/opendir.c:106:2: warning: implicit declaration of function '__fcntl_nocancel'

nptl_merge-2-g00891d9 (00891d9cf07efd992023f255164bba93d657ece4) builds perfectly without any problem

Big thank you, guys! You also give the fastest repsonse to bug reports ;)