[Bug 284276] ports-mgmt/pkg: 'version' command often segfaults when used with -o option after upgrading to pkg-2.0.0
Date: Thu, 23 Jan 2025 08:59:27 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=284276 --- Comment #2 from Ale <discipline@tiscali.it> --- I noticed that this is happening with both /usr/sbin/pkg and /usr/local/sbin/pkg, $ ls -latr /usr/local/sbin/pkg /usr/sbin/pkg -r-xr-xr-x 1 root wheel 35880 Dec 14 12:51 /usr/sbin/pkg -rwxr-xr-x 1 root wheel 4229024 Jan 23 07:01 /usr/local/sbin/pkg $ /usr/sbin/pkg version -o -n linux-quake4 Child process pid=59742 terminated abnormally: Segmentation fault $ /usr/local/sbin/pkg version -o -n linux-quake4 Child process pid=59831 terminated abnormally: Segmentation fault $ uname -Kvm FreeBSD 14.2-STABLE 9bc9cf4a2 STARLESS amd64 1402501 but I'm pretty sure it started crashing since yesterday, after upgrading ports-mgmt/pkg (in my case pkg is an alias for the latter). I tried rebuilding the port WITH_DEBUG and... # ./work/stage/usr/local/sbin/pkg version -o -n linux-quake4 Child process pid=59543 terminated abnormally: Segmentation fault # lldb ./work/stage/usr/local/sbin/pkg --core /usr/ports/pkg.core (lldb) target create "./work/stage/usr/local/sbin/pkg" --core "/usr/ports/pkg.core" Core file '/usr/ports/pkg.core' (x86_64) was loaded. (lldb) bt * thread #1, name = 'pkg', stop reason = signal SIGSEGV * frame #0: 0x000000000058d504 pkg`format_comment(buf=0x000026d13d24c480, data=0x000000000000003e, p=0x000026d13d22a400) at pkg_printf.c:1617:31 frame #1: 0x000000000058b578 pkg`process_format_main(buf=0x000026d13d24c480, p=0x000026d13d22a400, fstart="", fend="", data=0x000000000000003e) at pkg_printf.c:2900:6 frame #2: 0x000000000058ac28 pkg`pkg_xstring_vprintf(buf=0x000026d13d24c480, format="", ap=0x00000008210f2270) at pkg_printf.c:3191:8 frame #3: 0x000000000058a9f1 pkg`pkg_vprintf(format="", ap=0x00000008210f2270) at pkg_printf.c:2942:9 frame #4: 0x000000000058a98b pkg`pkg_printf(format="") at pkg_printf.c:2921:10 frame #5: 0x000000000032098c pkg`print_version(pkg=0x000026d13d316000, source="", ver="1.4.2_1,1", limchar='-', opt=9218) at version.c:117:3 frame #6: 0x0000000000320346 pkg`do_source_ports(opt=9218, limchar='-', pattern=0x0000000000000000, match=MATCH_ALL, matchorigin=0x0000000000000000, matchname="linux-quake4", portsdir="/usr/ports") at version.c:773:3 frame #7: 0x000000000031f63f pkg`exec_version(argc=0, argv=0x00000008210f3240) at version.c:1008:11 frame #8: 0x0000000000310591 pkg`main(argc=4, argv=0x00000008210f3220) at main.c:809:9 frame #9: 0x00000008262191c4 libc.so.7`__libc_start1(argc=5, argv=0x00000008210f3218, env=0x00000008210f3248, cleanup=<unavailable>, mainX=(pkg`main at main.c:489)) at libc_start1.c:157:7 frame #10: 0x0000000000301f80 pkg`_start at crt1_s.S:83 (lldb) f 0 frame #0: 0x000000000058d504 pkg`format_comment(buf=0x000026d13d24c480, data=0x000000000000003e, p=0x000026d13d22a400) at pkg_printf.c:1617:31 1614 { 1615 const struct pkg *pkg = data; 1616 -> 1617 return (string_val(buf, pkg->comment, p)); 1618 } 1619 1620 /* (lldb) p *buf (xstring) { buf = 0x000026d13d208248 "" size = 0 fp = 0x000000082638a178 } (lldb) p *p (percent_esc) { flags = 0 width = 0 trailer_status = 0 item_fmt = 0x000026d13d252780 sep_fmt = 0x000026d13d2527c0 fmt_code = PP_PKG_COMMENT } (lldb) frame var *pkg (const pkg) *pkg = { direct = <read memory from 0x3e failed (0 of 1 bytes read)> locked = <read memory from 0x3f failed (0 of 1 bytes read)> automatic = <read memory from 0x40 failed (0 of 1 bytes read)> vital = <read memory from 0x41 failed (0 of 1 bytes read)> id = <read memory from 0x46 failed (0 of 8 bytes read)> scripts = { [0] = <read memory from 0x4e failed (0 of 8 bytes read)> [1] = <read memory from 0x56 failed (0 of 8 bytes read)> [2] = <read memory from 0x5e failed (0 of 8 bytes read)> [3] = <read memory from 0x66 failed (0 of 8 bytes read)> [4] = <read memory from 0x6e failed (0 of 8 bytes read)> [5] = <read memory from 0x76 failed (0 of 8 bytes read)> [6] = <read memory from 0x7e failed (0 of 8 bytes read)> [7] = <read memory from 0x86 failed (0 of 8 bytes read)> [8] = <read memory from 0x8e failed (0 of 8 bytes read)> } lua_scripts = { [0] = { head = <read memory from 0x96 failed (0 of 8 bytes read)> tail = <read memory from 0x9e failed (0 of 8 bytes read)> length = <read memory from 0xa6 failed (0 of 8 bytes read)> } [1] = { head = <read memory from 0xae failed (0 of 8 bytes read)> tail = <read memory from 0xb6 failed (0 of 8 bytes read)> length = <read memory from 0xbe failed (0 of 8 bytes read)> } [2] = { head = <read memory from 0xc6 failed (0 of 8 bytes read)> tail = <read memory from 0xce failed (0 of 8 bytes read)> length = <read memory from 0xd6 failed (0 of 8 bytes read)> } [3] = { head = <read memory from 0xde failed (0 of 8 bytes read)> tail = <read memory from 0xe6 failed (0 of 8 bytes read)> length = <read memory from 0xee failed (0 of 8 bytes read)> } [4] = { head = <read memory from 0xf6 failed (0 of 8 bytes read)> tail = <read memory from 0xfe failed (0 of 8 bytes read)> length = <read memory from 0x106 failed (0 of 8 bytes read)> } } name = <read memory from 0x10e failed (0 of 8 bytes read)> origin = <read memory from 0x116 failed (0 of 8 bytes read)> version = <read memory from 0x11e failed (0 of 8 bytes read)> old_version = <read memory from 0x126 failed (0 of 8 bytes read)> maintainer = <read memory from 0x12e failed (0 of 8 bytes read)> www = <read memory from 0x136 failed (0 of 8 bytes read)> altabi = <read memory from 0x13e failed (0 of 8 bytes read)> abi = <read memory from 0x146 failed (0 of 8 bytes read)> uid = <read memory from 0x14e failed (0 of 8 bytes read)> digest = <read memory from 0x156 failed (0 of 8 bytes read)> old_digest = <read memory from 0x15e failed (0 of 8 bytes read)> message = { head = <read memory from 0x166 failed (0 of 8 bytes read)> tail = <read memory from 0x16e failed (0 of 8 bytes read)> length = <read memory from 0x176 failed (0 of 8 bytes read)> } prefix = <read memory from 0x17e failed (0 of 8 bytes read)> oprefix = <read memory from 0x186 failed (0 of 8 bytes read)> comment = <read memory from 0x18e failed (0 of 8 bytes read)> desc = <read memory from 0x196 failed (0 of 8 bytes read)> sum = <read memory from 0x19e failed (0 of 8 bytes read)> repopath = <read memory from 0x1a6 failed (0 of 8 bytes read)> reponame = <read memory from 0x1ae failed (0 of 8 bytes read)> repourl = <read memory from 0x1b6 failed (0 of 8 bytes read)> reason = <read memory from 0x1be failed (0 of 8 bytes read)> dep_formula = <read memory from 0x1c6 failed (0 of 8 bytes read)> licenselogic = <read memory from 0x1ce failed (0 of 4 bytes read)> pkgsize = <read memory from 0x1d6 failed (0 of 8 bytes read)> flatsize = <read memory from 0x1de failed (0 of 8 bytes read)> old_flatsize = <read memory from 0x1e6 failed (0 of 8 bytes read)> timestamp = <read memory from 0x1ee failed (0 of 8 bytes read)> depshash = <read memory from 0x1f6 failed (0 of 8 bytes read)> depends = <read memory from 0x1fe failed (0 of 8 bytes read)> rdepshash = <read memory from 0x206 failed (0 of 8 bytes read)> rdepends = <read memory from 0x20e failed (0 of 8 bytes read)> categories = { head = <read memory from 0x216 failed (0 of 8 bytes read)> tail = <read memory from 0x21e failed (0 of 8 bytes read)> length = <read memory from 0x226 failed (0 of 8 bytes read)> } licenses = { head = <read memory from 0x22e failed (0 of 8 bytes read)> tail = <read memory from 0x236 failed (0 of 8 bytes read)> length = <read memory from 0x23e failed (0 of 8 bytes read)> } filehash = <read memory from 0x246 failed (0 of 8 bytes read)> files = <read memory from 0x24e failed (0 of 8 bytes read)> dirhash = <read memory from 0x256 failed (0 of 8 bytes read)> dirs = <read memory from 0x25e failed (0 of 8 bytes read)> optionshash = <read memory from 0x266 failed (0 of 8 bytes read)> options = <read memory from 0x26e failed (0 of 8 bytes read)> users = { head = <read memory from 0x276 failed (0 of 8 bytes read)> tail = <read memory from 0x27e failed (0 of 8 bytes read)> length = <read memory from 0x286 failed (0 of 8 bytes read)> } groups = { head = <read memory from 0x28e failed (0 of 8 bytes read)> tail = <read memory from 0x296 failed (0 of 8 bytes read)> length = <read memory from 0x29e failed (0 of 8 bytes read)> } shlibs_required = { head = <read memory from 0x2a6 failed (0 of 8 bytes read)> tail = <read memory from 0x2ae failed (0 of 8 bytes read)> length = <read memory from 0x2b6 failed (0 of 8 bytes read)> } shlibs_provided = { head = <read memory from 0x2be failed (0 of 8 bytes read)> tail = <read memory from 0x2c6 failed (0 of 8 bytes read)> length = <read memory from 0x2ce failed (0 of 8 bytes read)> } conflictshash = <read memory from 0x2d6 failed (0 of 8 bytes read)> conflicts = <read memory from 0x2de failed (0 of 8 bytes read)> provides = { head = <read memory from 0x2e6 failed (0 of 8 bytes read)> tail = <read memory from 0x2ee failed (0 of 8 bytes read)> length = <read memory from 0x2f6 failed (0 of 8 bytes read)> } requires = { head = <read memory from 0x2fe failed (0 of 8 bytes read)> tail = <read memory from 0x306 failed (0 of 8 bytes read)> length = <read memory from 0x30e failed (0 of 8 bytes read)> } config_files_hash = <read memory from 0x316 failed (0 of 8 bytes read)> config_files = <read memory from 0x31e failed (0 of 8 bytes read)> annotations = { head = <read memory from 0x326 failed (0 of 8 bytes read)> tail = <read memory from 0x32e failed (0 of 8 bytes read)> length = <read memory from 0x336 failed (0 of 8 bytes read)> } flags = <read memory from 0x33e failed (0 of 4 bytes read)> rootfd = <read memory from 0x342 failed (0 of 4 bytes read)> rootpath = "" dir_to_del = { head = <read memory from 0x746 failed (0 of 8 bytes read)> tail = <read memory from 0x74e failed (0 of 8 bytes read)> length = <read memory from 0x756 failed (0 of 8 bytes read)> } type = <read memory from 0x75e failed (0 of 4 bytes read)> repo = <read memory from 0x766 failed (0 of 8 bytes read)> } Let me know if i can do any other test that might help. -- You are receiving this mail because: You are the assignee for the bug.