Bug 228197 - panic: solaris assert: arc_buf_alloc_impl
Summary: panic: solaris assert: arc_buf_alloc_impl
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 11.1-STABLE
Hardware: amd64 Any
: --- Affects Only Me
Assignee: freebsd-fs mailing list
URL:
Keywords: needs-qa, regression
Depends on:
Blocks:
 
Reported: 2018-05-12 12:28 UTC by iron.udjin
Modified: 2018-06-03 15:19 UTC (History)
2 users (show)

See Also:


Attachments
panic img (933.29 KB, image/jpeg)
2018-05-12 12:28 UTC, iron.udjin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description iron.udjin 2018-05-12 12:28:46 UTC
Created attachment 193323 [details]
panic img

I've installed FreeBSD-11.2-PRERELEASE-amd64-20180426-r333008, trying to migrate data from old HDD:

# zfs -vR zroot@move | zfs recv -dF zroottmp

...and receive panic. Please see attachment.
Comment 1 Andriy Gapon freebsd_committer 2018-05-12 17:10:36 UTC
Full panic message:
panic: solaris assert: arc_buf_alloc_impl(hdr, private, compressed_read, 1, &buf) == 0 (0x5 == 0), file /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c, line: 5452

Quick analysis... the error (EIO) that triggered the check came from this code:

                        int error = zio_decompress_data(HDR_GET_COMPRESS(hdr),
                            hdr->b_l1hdr.b_pabd, buf->b_data,
                            HDR_GET_PSIZE(hdr), HDR_GET_LSIZE(hdr));

                        /*
                         * Absent hardware errors or software bugs, this should
                         * be impossible, but log it anyway so we can debug it.
                         */
                        if (error != 0) {
                                zfs_dbgmsg(
                                    "hdr %p, compress %d, psize %d, lsize %d",
                                    hdr, HDR_GET_COMPRESS(hdr),
                                    HDR_GET_PSIZE(hdr), HDR_GET_LSIZE(hdr));
                                return (SET_ERROR(EIO));
                        }

The call chain is arc_read -> arc_buf_alloc_impl -> arc_buf_fill.

Not sure what to make of that decompression failure.
Did you use any special flags for zfs send in addition to -v and -R?
Do you have any pool errors?
Comment 2 iron.udjin 2018-05-13 00:27:58 UTC
I didn't use any other flags except -vR with "zfs send".
"zpool scrub" was the first what I did after I got the error and there were no errors.
Comment 3 jjuanino 2018-06-03 15:19:54 UTC
Hi, I have received a similar panic in my system:

Unread portion of the kernel message buffer:
panic: solaris assert: arc_buf_alloc_impl(hdr, private, compressed_read, 1, &buf) == 0 (0x5 == 0x0), file: /usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/z
fs/arc.c, line: 5452


Find the full backtrace here:

https://pastebin.com/raw/aR561L4a


At the moment of the panic, I was doing usual web browsing and opening some pdf file. I upgraded to 11.2-RC1 yesterday. Regards.