Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#7 cvsfs module crashes when I run cvsmount

closed
Petric
None
5
2003-03-06
2002-12-20
Patrizio Bruno
No

I had a module crash when I tried to run cvsmount or
cvsfsd, the problem seems to be in the wake_up_sync
call when I run cvsmount and in add_wait_queue (0x4
and 0x8 passed as arguments to the function).
I run a 2.4.20 with the xfs patch and glibc 2.3.1. Module
and utilities were compiled using gcc 2.95.4
I included the ksymoops output, hoping this could be
useful to you.

ksymoops for cvsmount:
ksymoops 2.4.8 on i686 2.4.20-xfs. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.20-xfs/ (default)
-m /usr/src/linux/System.map (default)

Warning: You did not tell me where to find symbol
information. I will
assume that the log matches the kernel and modules
that are running
right now and I'll use the default options above for
symbol resolution.
If the current kernel and/or modules do not match the
log, you can get
more accurate output by telling me the kernel version
and where to find
map, modules, ksyms etc. ksymoops -h explains the
options.

Reading Oops report from the terminal
Unable to handle kernel NULL pointer dereference at
virtual address 00000000
printing eip:
c0114bc0
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0114bc0>] Not tainted
EFLAGS: 00010082
eax: c789d3f8 ebx: 00000000 ecx: 00000001 edx:
00000001
esi: c789d3f8 edi: 00000001 ebp: c2d3fe4c esp:
c2d3fe30
ds: 0018 es: 0018 ss: 0018
Process cvsmnt (pid: 595, stackpage=c2d3f000)
Stack: c4fb6ca0 c4fb6d68 c4fb6d98 00000004
00000008
00000282 00000001 c4fb6ca0
c78944c7 c6b74a20 c4fb6d68 c4fb6d98 c026568c
c4fb6d68 c7898ca1 c2d3fe7c
c7897a99 c4fb6ca0 c7898ca1 00000001 0804c000
c0ec3800 00000000 c78990a0
Call Trace: [<c78944c7>] [<c026568c>] [<c7898ca1>]
[<c7897a99>] [<c7898ca1>]
[<c78990a0>] [<c78990a0>] [<c013c36b>]
[<c78990a0>]
[<c013c4b1>] [<c78990a0>]
[<c014bd79>] [<c014c032>] [<c014be94>]
[<c014c3b4>]
[<c0106bf7>]

Code: 8b 03 0f 18 00 83 c6 04 89 75 f0 39 f3 74 73 90
8d 43 f8 89
<3>cvsfs read_super: it is not allowed to use the
same mount point twice
cvsfs read_super: failed
Unable to handle kernel NULL pointer dereference at
virtual address 00000000
c0114bc0
*pde = 00000000
Oops: 0000
CPU: 0
EIP: 0010:[<c0114bc0>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010082
eax: c789d3f8 ebx: 00000000 ecx: 00000001 edx:
00000001
esi: c789d3f8 edi: 00000001 ebp: c2d3fe4c esp:
c2d3fe30
ds: 0018 es: 0018 ss: 0018
Process cvsmnt (pid: 595, stackpage=c2d3f000)
Stack: c4fb6ca0 c4fb6d68 c4fb6d98 00000004
00000008
00000282 00000001 c4fb6ca0
c78944c7 c6b74a20 c4fb6d68 c4fb6d98 c026568c
c4fb6d68 c7898ca1 c2d3fe7c
c7897a99 c4fb6ca0 c7898ca1 00000001 0804c000
c0ec3800 00000000 c78990a0
Call Trace: [<c78944c7>] [<c026568c>] [<c7898ca1>]
[<c7897a99>] [<c7898ca1>]
[<c78990a0>] [<c78990a0>] [<c013c36b>]
[<c78990a0>]
[<c013c4b1>] [<c78990a0>]
[<c014bd79>] [<c014c032>] [<c014be94>]
[<c014c3b4>]
[<c0106bf7>]
Code: 8b 03 0f 18 00 83 c6 04 89 75 f0 39 f3 74 73 90
8d 43 f8 89

>>EIP; c0114bc0 <__wake_up_sync+20/b0> <=====

>>eax; c789d3f8 <__FRAME_BEGIN__+604/????>
>>esi; c789d3f8 <__FRAME_BEGIN__+604/????>
>>ebp; c2d3fe4c <_end+2a18ad4/74f6ce8>
>>esp; c2d3fe30 <_end+2a18ab8/74f6ce8>

Trace; c78944c7
<[cvsfs]cvsfs_devfs_user_init+107/110>
Trace; c026568c <sprintf+14/18>
Trace; c7898ca1
<[cvsfs]__module_using_checksums+523/829>
Trace; c7897a99 <[cvsfs]cvsfs_read_super+289/3c0>
Trace; c7898ca1
<[cvsfs]__module_using_checksums+523/829>
Trace; c78990a0 <[cvsfs]__FRAME_BEGIN__+0/0>
Trace; c78990a0 <[cvsfs]__FRAME_BEGIN__+0/0>
Trace; c013c36b <get_sb_nodev+37/6c>
Trace; c78990a0 <[cvsfs]__FRAME_BEGIN__+0/0>
Trace; c013c4b1 <do_kern_mount+85/100>
Trace; c78990a0 <[cvsfs]__FRAME_BEGIN__+0/0>
Trace; c014bd79 <do_add_mount+69/134>
Trace; c014c032 <do_mount+14e/168>
Trace; c014be94 <copy_mount_options+50/a0>
Trace; c014c3b4 <sys_mount+84/c4>
Trace; c0106bf7 <system_call+33/38>

Code; c0114bc0 <__wake_up_sync+20/b0>
00000000 <_EIP>:
Code; c0114bc0 <__wake_up_sync+20/b0> <=====
0: 8b 03 mov (%ebx),%eax
<=====
Code; c0114bc2 <__wake_up_sync+22/b0>
2: 0f 18 00 prefetchnta (%eax)
Code; c0114bc5 <__wake_up_sync+25/b0>
5: 83 c6 04 add $0x4,%esi
Code; c0114bc8 <__wake_up_sync+28/b0>
8: 89 75 f0 mov
%esi,0xfffffff0(%ebp)
Code; c0114bcb <__wake_up_sync+2b/b0>
b: 39 f3 cmp %esi,%ebx
Code; c0114bcd <__wake_up_sync+2d/b0>
d: 74 73 je 82
<_EIP+0x82>
Code; c0114bcf <__wake_up_sync+2f/b0>
f: 90 nop
Code; c0114bd0 <__wake_up_sync+30/b0>
10: 8d 43 f8 lea
0xfffffff8(%ebx),%eax
Code; c0114bd3 <__wake_up_sync+33/b0>
13: 89 00 mov %eax,(%eax)

ksymoops for cvsfsd:
ksymoops 2.4.8 on i686 2.4.20-xfs. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.4.20-xfs/ (default)
-m /usr/src/linux/System.map (default)

Warning: You did not tell me where to find symbol
information. I will
assume that the log matches the kernel and modules that
are running
right now and I'll use the default options above for
symbol resolution.
If the current kernel and/or modules do not match the log,
you can get
more accurate output by telling me the kernel version
and where to find
map, modules, ksyms etc. ksymoops -h explains the
options.

Reading Oops report from the terminal
Unable to handle kernel NULL pointer dereference at
virtual address 00000004
printing eip:
c0115982
*pde = 00000000
Oops: 0002
CPU: 0
EIP: 0010:[<c0115982>] Not tainted
EFLAGS: 00010046
eax: 00000246 ebx: c0fa400c ecx: 00000000 edx:
c0fa4014
esi: c789d3f8 edi: c0cff240 ebp: c789d3f8 esp:
c1f8fef0
ds: 0018 es: 0018 ss: 0018
Process cvsfsd (pid: 733, stackpage=c1f8f000)
Stack: c0fa4000 c1f8ff6c c014462b c4fb6ca0 00000041
c789d3f8 c1f8ff6c c7894a06
c0cff240 c789d3f8 c1f8ff6c c78949e9 00000000
c0cff240 00000000 c1f8ff74
00000001 c29fd8b8 c1f8ff74 c01447b6 c0cff240
c1f8ff6c 00000004 00000001
Call Trace: [<c014462b>] [<c789d3f8>] [<c7894a06>]
[<c789d3f8>] [<c78949e9>]
[<c01447b6>] [<c0144bfa>] [<c0106bf7>]

Code: 89 51 04 89 4b 08 8d 4e 04 89 4a 04 89 56 04
50 9d 5b 5e c3

Unable to handle kernel NULL pointer dereference at
virtual address 00000004
c0115982
*pde = 00000000
Oops: 0002
CPU: 0
EIP: 0010:[<c0115982>] Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010046
eax: 00000246 ebx: c0fa400c ecx: 00000000 edx:
c0fa4014
esi: c789d3f8 edi: c0cff240 ebp: c789d3f8 esp:
c1f8fef0
ds: 0018 es: 0018 ss: 0018
Process cvsfsd (pid: 733, stackpage=c1f8f000)
Stack: c0fa4000 c1f8ff6c c014462b c4fb6ca0 00000041
c789d3f8 c1f8ff6c c7894a06
c0cff240 c789d3f8 c1f8ff6c c78949e9 00000000
c0cff240 00000000 c1f8ff74
00000001 c29fd8b8 c1f8ff74 c01447b6 c0cff240
c1f8ff6c 00000004 00000001
Call Trace: [<c014462b>] [<c789d3f8>] [<c7894a06>]
[<c789d3f8>] [<c78949e9>]
[<c01447b6>] [<c0144bfa>] [<c0106bf7>]
Code: 89 51 04 89 4b 08 8d 4e 04 89 4a 04 89 56 04
50 9d 5b 5e c3

>>EIP; c0115982 <add_wait_queue+12/28> <=====

>>ebx; c0fa400c <_end+c7cc94/74f6ce8>
>>edx; c0fa4014 <_end+c7cc9c/74f6ce8>
>>esi; c789d3f8 <__FRAME_BEGIN__+604/????>
>>edi; c0cff240 <_end+9d7ec8/74f6ce8>
>>ebp; c789d3f8 <__FRAME_BEGIN__+604/????>
>>esp; c1f8fef0 <_end+1c68b78/74f6ce8>

Trace; c014462b <__pollwait+87/8c>
Trace; c789d3f8 <__FRAME_BEGIN__+604/????>
Trace; c7894a06
<[cvsfs]cvsfs_devfs_control_poll+5e/6c>
Trace; c789d3f8 <__FRAME_BEGIN__+604/????>
Trace; c78949e9
<[cvsfs]cvsfs_devfs_control_poll+41/6c>
Trace; c01447b6 <do_select+e2/1dc>
Trace; c0144bfa <sys_select+322/464>
Trace; c0106bf7 <system_call+33/38>

Code; c0115982 <add_wait_queue+12/28>
00000000 <_EIP>:
Code; c0115982 <add_wait_queue+12/28> <=====
0: 89 51 04 mov %edx,0x4(%ecx)
<=====
Code; c0115985 <add_wait_queue+15/28>
3: 89 4b 08 mov %ecx,0x8(%ebx)
Code; c0115988 <add_wait_queue+18/28>
6: 8d 4e 04 lea 0x4(%esi),%ecx
Code; c011598b <add_wait_queue+1b/28>
9: 89 4a 04 mov %ecx,0x4(%edx)
Code; c011598e <add_wait_queue+1e/28>
c: 89 56 04 mov %edx,0x4(%esi)
Code; c0115991 <add_wait_queue+21/28>
f: 50 push %eax
Code; c0115992 <add_wait_queue+22/28>
10: 9d popf
Code; c0115993 <add_wait_queue+23/28>
11: 5b pop %ebx
Code; c0115994 <add_wait_queue+24/28>
12: 5e pop %esi
Code; c0115995 <add_wait_queue+25/28>
13: c3 ret

Discussion

  • Petric
    Petric
    2003-02-22

    Logged In: YES
    user_id=194627

    You are using devfs, right ?

    If so i found the solution:

    in cvsfs/devfs.c you find the code fragment (around line 385)
    ------------------- cut ---------------------
    cvsfs_device_major = device_id;

    init_waitqueue_head (&(cvsfs_restart_signal));
    #endif

    #ifdef __DEBUG__
    printk (KERN_DEBUG "cvsfs: devfs_init - successful
    completed\n");
    #endif

    return 0;
    ------------------- cut ---------------------

    Move the line "init_waitqueue_head ..." 2 lines lower (after the
    line with "#endif").

    Recompile, reinstall and you're (hopefully done).

    Sorry for the delay - but personally i had high load in the last
    weeks ...

    Please let me know if that helps.

    regards
    Petric

     
  • Petric
    Petric
    2003-02-22

    • assigned_to: nobody --> petric
     
  • Petric
    Petric
    2003-03-06

    • status: open --> closed
     
  • Petric
    Petric
    2003-03-06

    Logged In: YES
    user_id=194627

    Mo respone since 2 weeks - problem seems to be solved ...

    So i close it.