https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254177
Bug ID: 254177 Summary: When ZFS is recognized, An i386 machine with a lot of memory hangs. Product: Base System Version: 13.0-STABLE Hardware: i386 OS: Any Status: New Severity: Affects Only Me Priority: --- Component: kern Assignee: b...@freebsd.org Reporter: btren...@yahoo.co.jp When ZFS is recognized, An i386 machine with a lot of memory hangs on FreeBSD 13.0-RC1 (git 60e8939aa85b07f3271dcc01730727dda04c8bf6). It occurs on line 799th of /usr/src/sys/contrib/openzfs/module/zfs/dbuf.c while (hsize * zfs_arc_average_blocksize < physmem * PAGESIZE) hsize <<= 1; My machine has 24GB of memory, so `physmem' is 0x59B9AD and `PAGESIZE' is 0x1000, but `physmem * PAGESIZE' overflows to 0x9B9AD000. Then the condition of the while statement may always be true, and this statement goes into an eternal loop. To fix that immediately, that line will be changed to while (hsize * zfs_arc_average_blocksize < (uint64_t)physmem * PAGESIZE) or while (hsize / PAGESIZE * zfs_arc_average_blocksize < physmem) On the other hand, that problem comes from the type of the variable `physmem' which is declared on line 65th of /usr/src/sys/sys/systm.h for kernel, extern long physmem; /* physical memory */ and on line 54th of /usr/src/sys/contrib/openzfs/lib/libzpool/kernel.c for userland. uint64_t physmem; That problem does not occur on amd64, because the sizeof(long) is different. -- You are receiving this mail because: You are the assignee for the bug. _______________________________________________ freebsd-bugs@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"