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