Skip to content

Instantly share code, notes, and snippets.

@jclulow

jclulow/sigbus.d Secret

Created November 12, 2019 23:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jclulow/64db0253f5c5fc5e7e868e094ea96061 to your computer and use it in GitHub Desktop.
Save jclulow/64db0253f5c5fc5e7e868e094ea96061 to your computer and use it in GitHub Desktop.
#!/usr/sbin/dtrace -qCs
#define FC_OBJERR 0x5 /* underlying object returned errno value */
#define FC_CODE(fc) ((fc) & 0xff)
#define FC_ERRNO(fc) ((unsigned)(fc) >> 8)
BEGIN
{
printf("tracing...\n");
}
fbt::pagefault:entry
{
self->pf = 1;
}
fbt::acquire_kpmem_lock:return,
fbt::segdev_faultpage:return,
fbt::segdev_fault:return,
fbt::devmap_unload:return,
fbt::devmap_load:return,
fbt::segkp_fault:return,
fbt::segmap_fault:return,
fbt::segmap_faulta:return,
fbt::spt_anon_getpages:return,
fbt::segvn_faultpage:return,
fbt::segvn_fault_vnodepages:return,
fbt::segvn_fault_anonpages:return,
fbt::segvn_fault:return,
fbt::segvn_faulta:return
/self->pf && FC_CODE(arg1) == FC_OBJERR && FC_ERRNO(arg1) == ENOMEM/
{
printf("%Y: %s:\n", walltimestamp, probefunc);
stack();
printf("\n");
}
fbt::pagefault:return
/self->pf/
{
self->pf = 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment