Kernel build fails on ARM: Cannot fork: Cannot allocate memory

Ralf Wenk iz-rpi03 at hs-karlsruhe.de
Wed Jun 26 12:31:35 UTC 2013


> On Sun, 23 Jun 2013, Ruslan Bukin wrote:
> 
> > On Sun, Jun 23, 2013 at 07:50:40PM +0300, Konstantin Belousov wrote:
> >> On Sun, Jun 23, 2013 at 08:44:25PM +0400, Ruslan Bukin wrote:
> >>> On Sun, Jun 23, 2013 at 07:16:17PM +0300, Konstantin Belousov wrote:
> >>>> On Sun, Jun 23, 2013 at 06:43:46PM +0400, Ruslan Bukin wrote:
> >>>>>
> >>>>> Trying to mount root from ufs:/dev/da0 []...
> >>>>> WARNING: / was not properly dismounted
> >>>>> warning: no time-of-day clock registered, system time will not be set accurately
> >>>>> panic: __rw_wlock_hard: recursing but non-recursive rw pmap pv global @ /usr/home/br/dev/head/sys/arm/arm/pmap-v6.c:1289
> >>>>>
> >>>>> KDB: enter: panic
> >>>>> [ thread pid 1 tid 100001 ]
> >>>>> Stopped at      kdb_enter+0x48: ldrb    r15, [r15, r15, ror r15]!
> >>>>> db> bt
> >>>>> Tracing pid 1 tid 100001 td 0xc547f620
> >>>>> _end() at 0xde9d0530
> >>>>> scp=0xde9d0530 rlv=0xc1211458 (db_trace_thread+0x34)
> >>>>>         rsp=0xde9d0514 rfp=0xc12d1b60
> >>>>> Bad frame pointer: 0xc12d1b60
> >>>>> db>
> >>>> This is completely broken.  It seems that witness triggered the panic,
> >>>> and ddb is unable to obtain a backtrace from the normal panic(9) call.
> >>>>
> >>>> Show the output of the 'show alllocks'.
> >>>
> >>> No such command
> >> Do you have witness in the kernel config ? If not, add it to the config
> >> and retry.
> >
> > Trying to mount root from ufs:/dev/da0 []...
> > WARNING: / was not properly dismounted
> > warning: no time-of-day clock registered, system time will not be set accurately
> > panic: __rw_wlock_hard: recursing but non-recursive rw pmap pv global @ /usr/home/br/dev/head/sys/arm/arm/pmap-v6.c:1289
> >
> > KDB: enter: panic
> > [ thread pid 1 tid 100001 ]
> > Stopped at      kdb_enter+0x48: ldrb    r15, [r15, r15, ror r15]!
> > db> show alllocks
> > Process 1 (kernel) thread 0xc55fc620 (100001)
> > exclusive sleep mutex pmap (pmap) r = 0 (0xc5600590) locked @ /usr/home/br/dev/head/sys/arm/arm/pmap-v6.c:729
> > exclusive rw pmap pv global (pmap pv global) r = 0 (0xc1479dd0) locked @ /usr/home/br/dev/head/sys/arm/arm/pmap-v6.c:728
> > shared rw vm object (vm object) r = 0 (0xc1551d4c) locked @ /usr/home/br/dev/head/sys/vm/vm_map.c:1809
> > exclusive sx vm map (user) (vm map (user)) r = 0 (0xc5600528) locked @ /usr/home/br/dev/head/sys/kern/imgact_elf.c:445
> > exclusive lockmgr ufs (ufs) r = 0 (0xc56f7914) locked @ /usr/home/br/dev/head/sys/kern/imgact_elf.c:821
> > exclusive sleep mutex Giant (Giant) r = 0 (0xc147c778) locked @ /usr/home/br/dev/head/sys/kern/vfs_mount.c:1093
> > db>
> >
> 
> Would any of the arm users be interested in testing a larger patch that 
> changes the way the kernel allocations KVA?  It also has some UMA code 
> that lessens kernel memory utilization.
> 
> http://people.freebsd.org/~jeff/vmem.diff
> 
> Any reports would be helpful.  Is there any ETA on getting stack tracing 
> fixed?  I suspect the pmap recursion encountered with Kostik's patch exist 
> in the current kernel.  The other changes in this patch my fix that as 
> well.

I have tried the patch with CURRENT r252159, EABI and gcc 4.2.1 as the
default compiler on my Pi and got the same panic which occurs since
r251709.

Ralf

/boot/kernel/kernel data=0x3ddbe4+0x2447c syms=[0x4+0x8c840+0x4+0x66acf]
Hit [Enter] to boot immediately, or any other key for command prompt.
Booting [/boot/kernel/kernel]...               
Using DTB from memory address 0x00000100.
Kernel entry at 0x100100...
Kernel args: (null)
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2013 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 10.0-CURRENT #0 r252159M: Tue Jun 25 21:01:07 CEST 2013
    root at IZ-FreeBSD1:/usr/obj/arm.armv6/home/rpi/head/sys/RPI-Bsc arm
gcc version 4.2.1 20070831 patched [FreeBSD]
panic: lock "vm map (user)" 0xc06ea050 already initialized
KDB: enter: panic
[ thread pid 0 tid 0 ]
Stopped at      $d:     ldrb    r15, [r15, r15, ror r15]!
db> bt
Tracing pid 0 tid 0 td 0xc04e4a40
db_trace_self() at db_trace_self
         pc = 0xc03dddb0  lr = 0xc03dde38 (db_trace_thread+0x4c)
         sp = 0xc060aaf4  fp = 0xc026d744
db_trace_thread() at db_trace_thread+0x4c
         pc = 0xc03dde38  lr = 0xc012a650 (db_stack_trace+0xdc)
         sp = 0xc060ab54  fp = 0xc026d744
db_stack_trace() at db_stack_trace+0xdc
         pc = 0xc012a650  lr = 0xc0129d30 (db_command+0x2cc)
         sp = 0xc060ab6c  fp = 0xc026d744
         r4 = 0xc04b5eb0  r5 = 0x00000000
db_command() at db_command+0x2cc
         pc = 0xc0129d30  lr = 0xc0129e98 (db_command_loop+0x5c)
         sp = 0xc060ac0c  fp = 0xc026d744
         r4 = 0xc060ac20  r5 = 0xc04b6178
         r6 = 0x00000000  r7 = 0x00000000
         r8 = 0x00000001 r10 = 0x600001d3
db_command_loop() at db_command_loop+0x5c
         pc = 0xc0129e98  lr = 0xc012c2bc (db_trap+0xe4)
         sp = 0xc060ac14  fp = 0xc026d744
db_trap() at db_trap+0xe4
         pc = 0xc012c2bc  lr = 0xc026d980 (kdb_trap+0xa0)
         sp = 0xc060ad2c  fp = 0xc026d744
         r4 = 0xc060adc4
kdb_trap() at kdb_trap+0xa0
         pc = 0xc026d980  lr = 0xc03ef170 (undefinedinstruction+0x2c8)
         sp = 0xc060ad4c  fp = 0xc026d744
         r4 = 0x00000000  r5 = 0x00000000
         r6 = 0x00000000  r7 = 0xc060adc4
         r8 = 0xe7ffffff r10 = 0xe7ffffff
undefinedinstruction() at undefinedinstruction+0x2c8
         pc = 0xc03ef170  lr = 0xc03df578 (exception_exit)
         sp = 0xc060adc4  fp = 0x00000000
         r4 = 0xc042efc0  r5 = 0xc0432ac8
         r6 = 0xc04e6afc  r7 = 0xc060ae44
         r8 = 0xc04e4a40  r9 = 0xc06edc60
        r10 = 0xc06ea000
exception_exit() at exception_exit
         pc = 0xc03df578  lr = 0xc03df578 (exception_exit)
         sp = 0xc060adc4  fp = 0x00000000
Unable to unwind further
db> 



More information about the freebsd-arm mailing list