DF-2232 / fix_run.log
[DF2232-A1] === control phase PASSED (fails=0) === [DF2232-A2] === control phase (kernel KPI (shipped binary)) === [DF2232-A2] sizeof(struct idr_node)=16 [DF2232-A2] idr_init() [DF2232-A2] idr_count=255 (expect 255) [DF2232-A2] idr_alloc(start=1) -> 1 (expect 1), idr_count=255 (expect 255) [DF2232-A2] idr_alloc(start=1000) -> 1000 (expect 1000), idr_count=1023 (expect 1023) [DF2232-A2] idr_find(1) -> 0xaa (expect 0xaa) [DF2232-A2] idr_find(1000) -> 0xbb (expect 0xbb) [DF2232-A2] idr_find(999) -> 0 (expect NULL) [DF2232-A2] iter 1: idr_pre_get -> 1 (expect 1) [DF2232-A2] iter 1: idr_get_new_above(sid=500) -> -35 (EAGAIN=-35 expected on iter 1), id=-1 [DF2232-A2] iter 2: idr_pre_get -> 1 (expect 1) [DF2232-A2] iter 2: idr_get_new_above(sid=500) -> 0 (EAGAIN=-35 expected on iter 1), id=500 [DF2232-A2] get_new_above settled: ret=0 id=500 (expect 0, 500) after 2 iteration(s), idr_maxwant=500 (expect 500) [DF2232-A2] idr_remove(1000) -> 0xbb (expect 0xbb) [DF2232-A2] idr_alloc(start=1000) again -> 1000 (expect 1000) [DF2232-A2] idr_nexpands=1 [DF2232-A2] idr_destroy done [DF2232-A2] === control phase PASSED (fails=0) === [DF2232-B] === giant-kmalloc phase (verbatim copy) === [DF2232-B] plan: idr_alloc(start=536870912, end=0) [DF2232-B] expected idr_grow loop result: nf = 2^30-1 = 1073741823 [DF2232-B] expected kmalloc request: 1073741823 * 16 = 17179869168 bytes (~16 GiB, M_ZERO|M_WAITOK) [DF2232] arming 15 s watchdog on cpu 1 [DF2232-B] idr_init [DF2232-B] ALLOCATOR BOUNDARY: kmalloc(4080 bytes [0xff0], M_IDR, flags 0x102) -> real allocator [DF2232-B] entering idr_alloc ... (wedge expected on unfixed kernel; watchdog 15 s) [DF2232-B] idr_alloc RETURNED -12 (unexpected on unfixed kernel) [DF2232-B] NOTE: negative errno return, no giant kmalloc reached the allocator (last request was 4080 bytes) [DF2232] watchdog thread stopped+exiting [DF2232] watchdog disarmed [DF2232-C] === spin phase (verbatim KLD copy) === [DF2232-C] want=INT_MAX=2147483647: growth loop 2*INT_MAX+1 overflows signed int to -1; -1 <= INT_MAX -> infinite loop holding lwkt idr token [DF2232] arming 15 s watchdog on cpu 0 [DF2232-B] ALLOCATOR BOUNDARY: kmalloc(4080 bytes [0xff0], M_IDR, flags 0x102) -> real allocator [DF2232-C] idr_count=255 [DF2232-C] A: running on cpu 4 (verbatim copy) [DF2232-C] A: calling idr_get_new_above(sid=2147483647) -- expect -EAGAIN and idr_maxwant poisoned to INT_MAX [DF2232-C] A: get_new_above returned -35 (expect -35), id=-1, idr_maxwant=2147483647 (expect 2147483647) [DF2232-C] A: entering idr_pre_get -- expect INFINITE SPIN in idr_grow: nf=2*nf+1 wraps 2*INT_MAX+1 to -1, -1 <= INT_MAX forever, idr token held [DF2232-C] A: pre_get RETURNED 0 (unexpected on unfixed kernel) [DF2232-C] B: running on cpu 5 [DF2232-C] B: pre-spin token check: idr_remove(0) ... [DF2232-C] B: pre-spin token check returned (token was free) [DF2232-C] B: A entered pre_get (a_stage=2); calling idr_remove(0) on the SAME idr -- expect NEVER to return (lwkt token held forever by spinning A) [DF2232-C] B: idr_remove RETURNED (unexpected on unfixed kernel) [DF2232-C] phase finished: a_done=1 b_acquired=1 [DF2232-C] no spin, no livelock (fixed kernel behavior) [DF2232] watchdog thread stopped+exiting [DF2232] watchdog disarmed [DF2232-C] === spin phase (kernel KPI (shipped binary)) === [DF2232-C] want=INT_MAX=2147483647: growth loop 2*INT_MAX+1 overflows signed int to -1; -1 <= INT_MAX -> infinite loop holding lwkt idr token [DF2232] arming 15 s watchdog on cpu 0 [DF2232-C] idr_count=255 [DF2232-C] A: running on cpu 4 (kernel KPI) [DF2232-C] A: calling idr_get_new_above(sid=2147483647) -- expect -EAGAIN and idr_maxwant poisoned to INT_MAX [DF2232-C] A: get_new_above returned -35 (expect -35), id=-1, idr_maxwant=2147483647 (expect 2147483647) [DF2232-C] A: entering idr_pre_get -- expect INFINITE SPIN in idr_grow: nf=2*nf+1 wraps 2*INT_MAX+1 to -1, -1 <= INT_MAX forever, idr token held [DF2232-C] A: pre_get RETURNED 0 (unexpected on unfixed kernel)