Hello:
I was investigating an oops and the trace looked like this:
>>EIP; c01c54a9 <lvm_do_remove_proc_entry_of_vg+9/c0> <=====
Trace; c01c3654 <lvm_do_vg_rename+84/250>
Trace; c01c0f0f <lvm_chr_ioctl+30f/6d0>
Trace; c015e7e2 <ext2_getblk+72/e0>
Trace; c01155a6 <do_page_fault+166/440>
Trace; c01272a9 <do_no_page+49/a0>
Trace; c0127414 <handle_mm_fault+114/1a0>
Trace; c0136a2d <kunmap_high+7d/90>
Trace; c012722e <do_anonymous_page+de/110>
Trace; c0127290 <do_no_page+30/a0>
Trace; c0127414 <handle_mm_fault+114/1a0>
Trace; c014cdec <dput+1c/170>
Trace; c0143f80 <cached_lookup+10/50>
Trace; c0144aae <path_walk+85e/940>
Trace; c014cdec <dput+1c/170>
Trace; c01392c9 <chrdev_open+59/a0>
Trace; c0138130 <dentry_open+c0/150>
Trace; c013805d <filp_open+4d/60>
Trace; c0148b97 <sys_ioctl+247/2a0>
Trace; c01091c7 <system_call+33/38>
What is with those recursive handle_mm_fault calls?
That does not look quite right. I _assume_ that the
stack would collapse properly upon return, but still...
I would appreciate a suggestion about what .S file to read
for the explanation.
-- Pete
On Wed, 7 Mar 2001, Pete Zaitcev wrote:
> Trace; c0127414 <handle_mm_fault+114/1a0>
> Trace; c0136a2d <kunmap_high+7d/90>
> Trace; c012722e <do_anonymous_page+de/110>
> Trace; c0127290 <do_no_page+30/a0>
> Trace; c0127414 <handle_mm_fault+114/1a0>
> Trace; c014cdec <dput+1c/170>
> Trace; c0143f80 <cached_lookup+10/50>
> Trace; c0144aae <path_walk+85e/940>
> Trace; c014cdec <dput+1c/170>
> Trace; c01392c9 <chrdev_open+59/a0>
> Trace; c0138130 <dentry_open+c0/150>
> Trace; c013805d <filp_open+4d/60>
> Trace; c0148b97 <sys_ioctl+247/2a0>
> Trace; c01091c7 <system_call+33/38>
>
> What is with those recursive handle_mm_fault calls?
Unless I'm mistaken the call trace in an i386 oops is printed by
arch/i386/kernel/traps.c:show_trace()
And it simply prints any value within certain limits.
if (((addr >= (unsigned long) &_stext) &&
(addr <= (unsigned long) &_etext)) ||
((addr >= module_start) && (addr <= module_end))) {
/* ... print it ... */
If a function is passed as a parameter it will of course be on the stack,
even when it isn't a return value.
The dput entries are strange too, does dput call path_walk?
(is the translation from numbers to symbols correct?)
/Urban