Date: Mon, 04 Oct 2010 10:44:18 +0300 From: Andriy Gapon <avg@icyb.net.ua> To: David Wolfskill <david@catwhisker.org>, Julian Elischer <julian@freebsd.org>, current@freebsd.org Subject: [geom, cam] Hang near end of kernel probes since r213267 (likely earlier) Message-ID: <4CA985D2.3000805@icyb.net.ua> In-Reply-To: <20101004004910.GD1410@albert.catwhisker.org> References: <20101001212038.GE1535@albert.catwhisker.org> <20101001233001.GG1535@albert.catwhisker.org> <20101002013344.GI1535@albert.catwhisker.org> <AANLkTiny8TxsT0jObNqF7Jnkp-wrPBSecp_Y3%2BnKazNg@mail.gmail.com> <20101002033859.GK1535@albert.catwhisker.org> <20101003112859.GW1535@albert.catwhisker.org> <4CA86E73.9080707@icyb.net.ua> <20101003131409.GX1535@albert.catwhisker.org> <4CA906EB.5090305@freebsd.org> <20101004004910.GD1410@albert.catwhisker.org>
next in thread | previous in thread | raw e-mail | index | archive | help
on 04/10/2010 03:49 David Wolfskill said the following: > db> bt 1 > Tracing pid 1 tid 100002 td 0xc91d6b40 > sched_switch(c91d6b40,0,104,191,a4bfdaac,...) at 0xc08cccec = sched_switch+0x3bc > mi_switch(104,0,c0cccb89,1f3,68,...) at 0xc08af3a0 = mi_switch+0x200 > sleepq_switch(c91d6b40,0,c0cccb89,28b,0,...) at 0xc08e4b7b = sleepq_switch+0x15f > sleepq_timedwait(c0e1fc24,69,c0cbe3e4,0,0,...) at 0xc08e4b7b = sleepq_timedwait+0x6b > _sleep(c0e1fc24,c0e1fc28,68,c0cbe3e4,c8,...) at 0xc08af892 = _sleep+0x342 > g_waitidle(c0e21950,0,c0cd59c7,a2,29e,...) at 0xc083ee90 = g_waitidle+0xc0 > vfs_mountroot(c0e21950,4,c0cc12a9,2a0,0,...) at 0xc09378c8 = vfs_mountroot+0x98 > start_init(0,c6d76d28,c0cc3520,349,c91d3d48,...) at 0xc085f2b5 = start_init+0x65 > fork_exit(c085f250,0,c6d76d28) at 0xc087c3a8 = fork_exit+0xb8 > fork_trampoline() at 0xc0bd5824 = fork_trampoline+0x8 > --- trap 0, eip = 0, esp = 0xc6d76d60, ebp = 0 --- > db> bt 2 > sched_switch(c922f000,0,104,191,d0c3a239,...) at 0xc08cccec = sched_switch+0x3bc > mi_switch(104,0,c0cccb89,1f3,4c,...) at 0xc08af3a0 = mi_switch+0x200 > sleepq_switch(c922f000,0,c0cccb89,268,0,...) at 0xc08e3f6f = sleepq_switch+0x15f > sleepq_wait(c959e7bc,4c,c0c644ec,0,0,...) at 0xc08e4c73 = sleepq_wait+0x63 > _sleep(c959e7bc,c9b31d74,4c,c0c644ec,0,...) at 0xc08af8c2 = _sleep+0x372 > cam_periph_getccb(c959e780,480,80246,c91462e0,c922f0a4,480) at 0xc04860af = cam_periph_getccb+0xaf > cdgetccb(c0dc7914,c0c64915,c922f000,c0e00998,12d2,...) at 0xc0499e08 = cdgetccb+0xd8 > cdprevent(14c,c6d8db64,c04883ca,c0e00998,0,...) at 0xc049a602 = cdprevent+0c52 > cdcheckmedia(c959e780,14c,c0c659d6,bc,0,...) at 0xc049a6a9 = cdcheckmedia+0x19 > cdopen(c953aa00,4,c0cbdd7f,76,0,...) at 0xc049bb2d = cdopen+0xed > g_disk_access(ca8c5e80,1,0,0,ca8c5ed8,...) at 0xc083ddcd = g_disk_access+0x11d > g_access(ca8c5680,1,0,0,ca8c5ed8,...) at 0xc084365e = g_access+0x23e > g_part_taste(c0dbcca0,ca8c5e80,0,228,ca8c5d80,...) at 0xc084a0a6 = g_part_taste+0xc6 > g_new_provider_event(ca8c5e80,0,c0cbe313,d9,c922f000,...) at 0xc0843316 = g_new_provider_event+0xb6 > g_run_events(c0e1fcd8,0,4c,c0ce99a5,64,...) at 0xc083f290 = g_run_events+0x3c0 > g_event_procbody(0,c6d8dd28,c0cc3520,349,c91d3550,...) at 0xc0840d8a = g_event_procbody+0x8a > fork_exit(c0840d00,0,c6d8dd28) at 0xc087c3a8 = fork_exit+0xb8 > fork_trampoline() at 0xc0bd5824 = fork_trampoline+0x8 > --- trap 0, eip = 0, esp = 0xc6d8dd60, ebp = 0 --- Interesting! So, init thread is blocked in vfs_mountroot()->g_waitidle() waiting for geom to complete probing cd device, but the latter is blocked in cam_periph_getccb() waiting for a ccb. Can you try to reproduce this again and examine other thread for anything interesting in geom/cam department? Thread named as "xpt_thrd" might be of particular interest. We urgently need geom and cam experts here :-) -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CA985D2.3000805>