[parisc-linux] a pretty big change
John David Anglin
dave@hiauly1.hia.nrc.ca
Fri, 10 Dec 1999 12:49:38 -0500 (EST)
>
>
> Ulrich,
>
> I apologize for suggesting you consider the
> r1 value 0xc0112000 by mistake, I meant the r2 value 0xc004a170.
> >From the r2 and iaoq values, it looks like create_buffers():
>
> create_buffers+4C: STW r0,-116(r30)
> LDI 4096,r4
> SUB r4,r8,r4
> COMIB,> 0,r4,create_buffers+0x00a0
> LDI 0,r3
> ZDEPI -1,31,16,r5
> BL get_unused_buffer_head,r2
> OR r9,r0,r26
> MOVB,=,N r28,r26,create_buffers+0x00a8 ***** %r2
> STW r3,20(r26)
>
> Just called get_unused_buffer_head, which died on the indicated line:
>
> get_unused_buffer_head+4C: ADDIL L%0x73000,r27
> LDO -1(r20),r20 ; nr_unused_buffer_heads--
> LDW 232(r1),r3 ; r3 = bh
> STW r20,264(r4) ; nr_unused_buffer_heads--
> OR r3,r0,r28 ; return value = r3
> LDW 28(r3),r19 *** died here
> B get_unused_buffer_head+0x00e0
> STW r19,232(r1)
>
> Since %r3 is zero at this moment, we die. I think we are dying trying
> to execute 'unused_list = bh->b_next_free;' in get_unused_buffer_head()
> with bh = 0. No idea why.
See my mail to the list on Nov. 30, "Re: [parisc-linux] Progress - Update". xchg has clobbered unused_list.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)