Messages in this thread | | | Date | Thu, 20 Mar 1997 15:56:59 -0800 (PST) | From | Zach <> | Subject | 2.0.29 stuck in loop in grow_buffers |
| |
i have 3 ppro166 with 132megs ecc, 2 on board aic7880s..
when running it with 64meg (the most, it seems, the bios will report) all is well. when i add mem=132M to the kernel args, it hangs just after
Partition check: sda: sda1 sda2 sdb: sdb1 sdb2 sdb3
alt-scrolllock still works, and points to the problem (symptom?..)
(this is all hand recorded..)
eip: 0010:[<0012b307>] flags=206 ds/es/gs=18 fs=2b eax/edx = -1 (ffffffff) ebx=1 ecx=83effac esi=83eefac edi=83f0000 ebp = 1ada4
and hitting it repeatedly makes eip jump around, but always ending in {307,2fe,328,304} the flags jump around 202,216,286 and i'm way too lazy to figure out what those mean :) ax,cx, and dx toggle between -1 and 83effac
so poking around with objdump shows that this is all in the while(1) loop in grow_buffers.
while (1) { nr_free[isize]++; if (insert_point) { tmp->b_next_free = insert_point->b_next_free; tmp->b_prev_free = insert_point; insert_point->b_next_free->b_prev_free = tmp; insert_point->b_next_free = tmp; } else { tmp->b_prev_free = tmp; tmp->b_next_free = tmp; } insert_point = tmp; ++nr_buffers; ++nr_buffers_size[isize]; if (tmp->b_this_page) tmp = tmp->b_this_page; else break; }
from looking at objdump (see way below) is used for temp space now and again.. ecx = insert_point, and edx = tmp.
so for whatever reason, it seems that a -1 is getting in there are confusing the bajeebies out of things. i can do more debugging if people want (hitting whatever keys that give the process and buffer listings). I haven't tried 2.1.x kernels to see if its in there too.
now, i'm not quite conviced that the hardware isn't at fault. this box is.. sort of experimental :) is there some way we can find out?
thanks, zach
0012b270 <grow_buffers> pushl %edi 0012b271 <grow_buffers+1> pushl %esi 0012b272 <grow_buffers+2> pushl %ebx 0012b273 <grow_buffers+3> movl 0x10(%esp,1),%edx 0012b277 <grow_buffers+7> movl 0x14(%esp,1),%esi 0012b27b <grow_buffers+b> testl $0x1ff,%esi 0012b281 <grow_buffers+11> jne 0012b28b <grow_buffers+1b> 0012b283 <grow_buffers+13> cmpl $0x1000,%esi 0012b289 <grow_buffers+19> jbe 0012b2a0 <grow_buffers+30> 0012b28b <grow_buffers+1b> pushl %esi 0012b28c <grow_buffers+1c> pushl $0x1ad9e3 0012b291 <grow_buffers+21> call 001170c8 <printk> 0012b296 <grow_buffers+26> xorl %eax,%eax 0012b298 <grow_buffers+28> addl $0x8,%esp 0012b29b <grow_buffers+2b> popl %ebx 0012b29c <grow_buffers+2c> popl %esi 0012b29d <grow_buffers+2d> popl %edi 0012b29e <grow_buffers+2e> ret 0012b29f <grow_buffers+2f> nop 0012b2a0 <grow_buffers+30> movl %esi,%eax 0012b2a2 <grow_buffers+32> sarl $0x9,%eax 0012b2fb <grow_buffers+8b> movl 0x18(%ecx),%eax 0012b2fe <grow_buffers+8e> movl %eax,0x18(%edx) 0012b301 <grow_buffers+91> movl %ecx,0x3c(%edx) 0012b304 <grow_buffers+94> movl 0x18(%ecx),%eax 0012b307 <grow_buffers+97> movl %edx,0x3c(%eax) 0012b30a <grow_buffers+9a> movl %edx,0x18(%ecx) 0012b30d <grow_buffers+9d> jmp 0012b316 <grow_buffers+a6> 0012b30f <grow_buffers+9f> nop 0012b310 <grow_buffers+a0> movl %edx,0x3c(%edx) 0012b313 <grow_buffers+a3> movl %edx,0x18(%edx) 0012b316 <grow_buffers+a6> movl %edx,%ecx 0012b318 <grow_buffers+a8> incl 0x1c515c 0012b31e <grow_buffers+ae> incl 0x1c5178(,%ebx,4) 0012b325 <grow_buffers+b5> movl 0x10(%edx),%eax 0012b328 <grow_buffers+b8> testl %eax,%eax 0012b32a <grow_buffers+ba> je 0012b330 <grow_buffers+c0> 0012b32c <grow_buffers+bc> movl %eax,%edx 0012b32e <grow_buffers+be> jmp 0012b2f0 <grow_buffers+80> 0012b330 <grow_buffers+c0> movl %esi,0x10(%edx) 0012b333 <grow_buffers+c3> movl %esi,0x1c513c(,%ebx,4) 0012b33a <grow_buffers+ca> movl %edi,%eax 0012b33c <grow_buffers+cc> shrl $0xc,%eax 0012b33f <grow_buffers+cf> movl 0x1c44a0,%ecx 0012b345 <grow_buffers+d5> leal (%eax,%eax,2),%edx 0012b348 <grow_buffers+d8> leal (%eax,%edx,4),%edx 0012b34b <grow_buffers+db> movl %esi,0x28(%ecx,%edx,4) 0012b34f <grow_buffers+df> addl $0x1000,0x1c5240 0012b359 <grow_buffers+e9> movl $0x1,%eax 0012b35e <grow_buffers+ee> popl %ebx 0012b35f <grow_buffers+ef> popl %esi 0012b360 <grow_buffers+f0> popl %edi 0012b361 <grow_buffers+f1> ret 0012b362 <grow_buffers+f2> leal (%esi),%esi
| |