Date: Mon, 3 Jun 2019 17:24:44 -0700 From: Mark Millard <marklmi@yahoo.com> To: FreeBSD PowerPC ML <freebsd-ppc@freebsd.org> Subject: crash of 32-bit powerpc -r347549 kernel built via system-clang-8 (crash is while trying to mount the root file system) Message-ID: <45D010BF-7654-43A6-8FF4-CCDEEF4004F6@yahoo.com>
next in thread | raw e-mail | index | archive | help
I tried (cross) building a 32-bit powerpc kernel and world (non-debug) with system-clang (on amd64) and use of devel/powerpc64-binutils . The installed kernel panics trying to mount the root file system. FYI: Typed from picture of screen . . . Trying to mount root from ufs:/dev/ufs/FBSDG4Srootfs [rw,noatime]... panic: getnewbuf_empty: Locked buf 0xd2800000 on free queue. . . . 0xd6919080: at kdb_backtrace+0x64 0xd69190e0: at vpanic+0x200 0xd6919150: at panic+0x50 0xd6919190: at getnewbuf+0x594 0xd69191f0: at getblkx+0x540 0xd69192a0: at breadn_flags+0x90 0xd69192f0: at ffs_use_bread+0x9c 0xd6919330: at readsuper+0x68 0xd6919370: at ffs_sbget+0xcc 0xd69193c0: at ffs_mount+0x18b8 0xd69194f0: at vfs_domount+0xa74 0xd69196a0: at vfs_donmount+0x944 0xd6919700: at kernel_mount+0x64 0xd6919740: at parse_mount+0x52c 0xd6919840: at vfs_mountroot+0x71c 0xd69199b0: at start_init+0x44 0xd6919a10: at fork_exit_0xcc 0xd6919a40: at fork_trampoline+0xc KDB: enter panic [ thread pid 1 tid 100002 ] Stopped at kdb_enter+0x74: addi r3,r0,0x0 This reproduces with each boot attempt. Replacing the kernel with one built via gcc 4.2.1 and booting the result does not panic. FYI for the context of the panic call: /usr/src/sys/kern/vfs_bio.c : static struct buf * buf_alloc(struct bufdomain *bd) { struct buf *bp; int freebufs; /* * We can only run out of bufs in the buf zone if the average buf * is less than BKVASIZE. In this case the actual wait/block will * come from buf_reycle() failing to flush one of these small bufs. */ bp = NULL; freebufs = atomic_fetchadd_int(&bd->bd_freebuffers, -1); if (freebufs > 0) bp = uma_zalloc(buf_zone, M_NOWAIT); if (bp == NULL) { atomic_add_int(&bd->bd_freebuffers, 1); bufspace_daemon_wakeup(bd); counter_u64_add(numbufallocfails, 1); return (NULL); } /* * Wake-up the bufspace daemon on transition below threshold. */ if (freebufs == bd->bd_lofreebuffers) bufspace_daemon_wakeup(bd); if (BUF_LOCK(bp, LK_EXCLUSIVE | LK_NOWAIT, NULL) != 0) panic("getnewbuf_empty: Locked buf %p on free queue.", bp); === Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45D010BF-7654-43A6-8FF4-CCDEEF4004F6>