freebsd-nq/share
Pawel Jakub Dawidek af71f40a98 Add a little, but very useful script for use with programs that work using an
event loop and should sleep only when waiting for events (eg. via kevent(2)).
When a program is going to sleep in the kernel, the script will show its name,
PID, kernel stack trace and userland stack trace. Sleeping in kevent(2) is
ignored as it is expected to be valid.

Sample output:

# ./blocking lynxd

lynxd(15042) is blocking...

              kernel`_cv_wait_sig+0x124
              kernel`seltdwait+0xae
              kernel`sys_poll+0x3a3
              kernel`amd64_syscall+0x343
              kernel`0xffffffff806c79ab

              lynxd`poll+0xa
              lynxd`pqSocketCheck+0xa2
              lynxd`pqWaitTimed+0x29
              lynxd`connectDBComplete+0xd7
              lynxd`PQsetdbLogin+0x2ec
              lynxd`db_connect+0x3c
              lynxd`main+0x198
              lynxd`_start+0x16f
              0x2

lynxd(1925) is blocking...

              kernel`_cv_wait+0x125
              zfs.ko`zio_wait+0x5b
              zfs.ko`dmu_buf_hold_array_by_dnode+0x1dc
              zfs.ko`dmu_read+0xcb
              zfs.ko`zfs_freebsd_getpages+0x37b
              kernel`VOP_GETPAGES_APV+0xa7
              kernel`vnode_pager_getpages+0x9a
              kernel`vm_fault_hold+0x885
              kernel`vm_fault+0x77
              kernel`trap_pfault+0x211
              kernel`trap+0x506
              kernel`0xffffffff806c76c2

              lynxd`EVP_add_cipher+0x13
              lynxd`SSL_library_init+0x11
              lynxd`main+0x94
              lynxd`_start+0x16f
              0x2

lynxd(1925) is blocking...

              kernel`_cv_wait+0x125
              zfs.ko`zio_wait+0x5b
              zfs.ko`dbuf_read+0x791
              zfs.ko`dbuf_findbp+0x12f
              zfs.ko`dbuf_hold_impl+0xa2
              zfs.ko`dbuf_hold+0x1b
              zfs.ko`dmu_buf_hold_array_by_dnode+0x153
              zfs.ko`dmu_read_uio+0x66
              zfs.ko`zfs_freebsd_read+0x3a3
              kernel`VOP_READ_APV+0xa1
              kernel`vn_read+0x13a
              kernel`vn_io_fault+0x10b
              kernel`dofileread+0x95
              kernel`kern_readv+0x68
              kernel`sys_read+0x63
              kernel`amd64_syscall+0x343
              kernel`0xffffffff806c79ab

              lynxd`_read+0xa
              lynxd`__srefill+0x122
              lynxd`fgets+0x78
              lynxd`file_gets+0x1d
              lynxd`BIO_gets+0x64
              lynxd`PEM_read_bio+0xf5
              lynxd`PEM_X509_INFO_read_bio+0x90
              lynxd`X509_load_cert_crl_file+0x47
              lynxd`by_file_ctrl+0x2e
              lynxd`X509_STORE_load_locations+0x4a
              lynxd`sslctx_init+0x255
              lynxd`main+0x215
              lynxd`_start+0x16f
              0x2

Requested by:	gnn
Obtained from:	Wheel Systems http://wheelsystems.com
2015-10-04 00:40:12 +00:00
..
colldef Add META_MODE support. 2015-06-13 19:20:56 +00:00
dict Add META_MODE support. 2015-06-13 19:20:56 +00:00
doc META_MODE: Remove DEP_MACHINE from Makefile.depend files. 2015-09-25 19:44:01 +00:00
dtrace Add a little, but very useful script for use with programs that work using an 2015-10-04 00:40:12 +00:00
examples Join excessive split lines. 2015-09-30 12:40:51 +00:00
i18n new depends 2015-06-16 23:37:19 +00:00
keys
man /usr/src/games was removed in r288485. 2015-10-02 17:51:47 +00:00
me Add META_MODE support. 2015-06-13 19:20:56 +00:00
misc jhg -> jgh 2015-09-05 01:00:02 +00:00
mk META_MODE: Fix stage_links not running in the right order without -j. 2015-10-02 06:24:09 +00:00
mklocale Add META_MODE support. 2015-06-13 19:20:56 +00:00
monetdef Add META_MODE support. 2015-06-13 19:20:56 +00:00
msgdef Remove rm -Rf beforeinstall hack that was needed due to a change that 2015-09-18 22:55:18 +00:00
numericdef Add META_MODE support. 2015-06-13 19:20:56 +00:00
security META_MODE: Remove DEP_MACHINE from Makefile.depend files. 2015-09-25 19:44:01 +00:00
sendmail Add META_MODE support. 2015-06-13 19:20:56 +00:00
skel Add META_MODE support. 2015-06-13 19:20:56 +00:00
snmp Add META_MODE support. 2015-06-13 19:20:56 +00:00
syscons Add META_MODE support. 2015-06-13 19:20:56 +00:00
tabset Add META_MODE support. 2015-06-13 19:20:56 +00:00
termcap Add META_MODE support. 2015-06-13 19:20:56 +00:00
tests
timedef Add META_MODE support. 2015-06-13 19:20:56 +00:00
vt Add double size 16x32 VGA ROM font 2015-09-25 02:52:54 +00:00
zoneinfo Fix build when LEAPSECONDS is enabled. 2015-08-22 07:41:28 +00:00
Makefile Only build share/dtrace if MK_CDDL != no 2015-01-25 00:32:17 +00:00
Makefile.inc