From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Mon, 25 Jul 2011 15:58:37 +0200 From: Lucio De Re To: 9fans@9fans.net Message-ID: <20110725135837.GC27739@fangle.proxima.alt.za> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) Subject: [9fans] Lock loop in malloc() Topicbox-Message-UUID: 05d31776-ead7-11e9-9d60-3106f5b1d025 While attempting to compile Bison (yeah, still gnawing at that bone!) I have managed to jam cpp more or less solid. That's compiling scan-code-c.c which reduces to compiling scan-code.c. However, it does not seem to be Bison that's at fault: it seems that an invocation of alloc() tries to set a lock and never succeeds or gives up. This is a summary, with some help from acid, subject to some very limited knowledge on my part: term% acid 3208 /proc/3208/text:386 plan 9 executable /sys/lib/acid/port /sys/lib/acid/386 acid: lstk() sleep()+0x7 /sys/src/libc/9syscall/sleep.s:5 lock(lk=0x1f2f8)+0xb7 /sys/src/libc/port/lock.c:25 plock(p=0x18310)+0x16 /sys/src/libc/port/malloc.c:81 poolalloc(p=0x18310,n=0x20)+0xf /sys/src/libc/port/pool.c:1223 malloc(size=0x18)+0x1c /sys/src/libc/port/malloc.c:207 domalloc(size=0x18)+0xf /sys/src/cmd/cpp/cpp.c:271 lookup(tp=0xab4a8,install=0x1)+0x74 /sys/src/cmd/cpp/nlist.c:213 dodefine(trp=0xdfffeeac)+0x40 /sys/src/cmd/cpp/macro.c:23 control(trp=0xdfffeeac)+0x4b2 /sys/src/cmd/cpp/cpp.c:133 process(trp=0xdfffeeac)+0xec /sys/src/cmd/cpp/cpp.c:70 main(argc=0xb,argv=0xdfffef0c)+0x8a /sys/src/cmd/cpp/cpp.c:35 _main+0x31 /sys/src/libc/386/main9.s:16 acid: lstk() sleep()+0x7 /sys/src/libc/9syscall/sleep.s:5 lock(lk=0x1f2f8)+0xb7 /sys/src/libc/port/lock.c:25 i=0x3e8 plock(p=0x18310)+0x16 /sys/src/libc/port/malloc.c:81 pv=0x1f2f8 poolalloc(p=0x18310,n=0x20)+0xf /sys/src/libc/port/pool.c:1223 v=0x1928 malloc(size=0x18)+0x1c /sys/src/libc/port/malloc.c:207 v=0x18310 domalloc(size=0x18)+0xf /sys/src/cmd/cpp/cpp.c:271 p=0x0 lookup(tp=0xab4a8,install=0x1)+0x74 /sys/src/cmd/cpp/nlist.c:213 h=0x6f np=0x1 dodefine(trp=0xdfffeeac)+0x40 /sys/src/cmd/cpp/macro.c:23 dots=0x0 tp=0xab4a8 np=0x27100 args=0x3e narg=0x204b6 err=0x6 atp=0x27140 def=0x3876 tap=0x204b6 control(trp=0xdfffeeac)+0x4b2 /sys/src/cmd/cpp/cpp.c:133 tp=0xab498 np=0x27100 process(trp=0xdfffeeac)+0xec /sys/src/cmd/cpp/cpp.c:70 anymacros=0x80000020 main(argc=0xb,argv=0xdfffef0c)+0x8a /sys/src/cmd/cpp/cpp.c:35 ebuf=0x3a707063 tr=0xab498 _main+0x31 /sys/src/libc/386/main9.s:16 acid: I've no idea how to track this problem down, let alone fix it. But this problem is reproducible, albeit not using a small code base. It is mildly possible that my Plan 9 installation is not altogether pristine and is causing this situation, but I can't think how. ++L