dtrace support: vim exits with SIGILL
Stefan Ehmann
shoesoft at gmx.net
Sun Feb 7 15:58:43 UTC 2021
I'm not sure if this is a bug or if I'm using an unsupported setup.
In case anyone runs into a similar problem, here's why my vim stopped working.
Package builder:
poudriere jail 12.2-RELEASE amd64
Package consumer running vim:
Ancient PC running 12.2-RELEASE amd64
The root cause of the problem is that the poudriere jail was built with
CPUTYPE=znver1 instead of stock FreeBSD.
Initial symptoms: vim crashes with illegal instruction.
It turns out the crash is actually in libperl.so.5.32. Throwing gdb at perl:
Program received signal SIGILL, Illegal instruction.
0x00000008005ce435 in dtrace_dof_init ()
at /usr/src/cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:138
138 if (dof->dofh_ident[DOF_ID_MAG0] != DOF_MAG_MAG0 ||
Current instruction is:
=> 0x00000008005ce435 <+165>: vmovq (%rax),%xmm0
Turning off option DTRACE fixes perl. vim still crashes because ruby also uses
dtrace (port offers no option to disable dtrace).
Disabling RUBY in vim finally fixes the problem.
It seems /usr/lib/dtrace/drti.o from the poudriere jail is included in perl/
ruby. I'm not familiar with dtrace probes. So I'm not sure if there is a fix
short of disabling dtrace or not mixing CPUTYPE.
More information about the freebsd-ports
mailing list