Fusermount oops (FUSE 1.4)

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Fusermount oops (FUSE 1.4)

Luka Renko
Hi!

We have strange oops in fusermount on FC4 (2.6.12-1.1447_FC4smp) with FUSE
1.4 (we are waiting to migrate to 2.x with inode API soon).

We were able to reproduce it with example program by doing this:

while true; do ./hello /mnt/x & CPID=$!; sleep 0.2; kill $CPID; sleep 0.2;
done

And it oopsed after about 20 iterations.

Unable to handle kernel paging request at virtual address 00080003  printing
eip:
c030434a
*pde = 1fb30001
Oops: 0000 [#1]
SMP
Modules linked in: fuse(U) nfs nfsd lockd parport_pc lp parport autofs4
i2c_dev i2c_core sunrpc xfs exportfs dm_mod video button battery ac
usb_storage md5 ipv6 uhci_hcd ehci_hcd snd_intel8x0 snd_ac97_codec
snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device
snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd soundcore snd_page_alloc tg3
floppy ext3 jbd ata_piix libata sd_mod scsi_mod
CPU:    1
EIP:    0060:[<c030434a>]    Not tainted VLI
EFLAGS: 00010206   (2.6.12-1.1447_FC4smp)
EIP is at unix_get_socket+0x2a/0x33
eax: ffff0000   ebx: 00000000   ecx: 00000000   edx: 00080003
esi: f1fd3d54   edi: d74fa680   ebp: 00000000   esp: f1fd3d14
ds: 007b   es: 007b   ss: 0068
Process fusermount (pid: 11639, threadinfo=f1fd3000 task=c3e3c020)
Stack: c0304358 c0302bab d74fa680 f1fd3d60 d74fa6c4 00000000 c03032df
f1fd3d68
       d52036a0 f1fd3f4c f1fd3dfc e27bed80 d5203500 00000000 00000000
00000001
       00002d77 00000000 00000000 eac98800 00000000 ffffff95 c03902a0
00000001 Call Trace:
 [<c0304358>] unix_inflight+0x5/0x18
 [<c0302bab>] unix_attach_fds+0x22/0x43
 [<c03032df>] unix_stream_sendmsg+0x213/0x3a6  [<c02a2577>]
sock_sendmsg+0xe4/0xff  [<c0134feb>] autoremove_wake_function+0x0/0x37
[<c014560d>] find_get_page+0x37/0x42  [<c01d7cae>] copy_from_user+0x42/0x84
[<c02a3e0c>] sys_sendmsg+0x11e/0x213  [<c01ba327>] avc_has_perm+0x4e/0x67
[<c0154a44>] handle_mm_fault+0x18b/0x1d7  [<c02a4348>]
sys_socketcall+0x270/0x292  [<c0108709>] do_syscall_trace+0xef/0x123
[<c0104035>] syscall_call+0x7/0xb
Code: 90 8b 40 08 8b 50 10 0f b7 42 28 25 00 f0 00 00 3d 00 c0 00 00 74 03
31 c0
c3 83 ea 2c 8b 42 14 85 c0 74 f3 8b 52 08 85 d2 74 ec <83> 3a 01 74 e9 31 c0
eb
e5 e8 c8 ff ff ff 85 c0 74 0e f0 ff 80
 
kernel: 2.6.12-1.1447_FC4smp (updated fc4)

I am not sure if FUSE 2.x have changed in this respect or is this still
reproducable.
I have seen similar discussion recently, but no Oops was published:
http://sourceforge.net/mailarchive/message.php?msg_id=12464684

Regards,
Luka


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
fuse-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/fuse-devel
Reply | Threaded
Open this post in threaded view
|

Re: Fusermount oops (FUSE 1.4)

Miklos Szeredi
> We have strange oops in fusermount on FC4 (2.6.12-1.1447_FC4smp) with FUSE
> 1.4 (we are waiting to migrate to 2.x with inode API soon).
>
> We were able to reproduce it with example program by doing this:
>
> while true; do ./hello /mnt/x & CPID=$!; sleep 0.2; kill $CPID; sleep 0.2;
> done
>
> And it oopsed after about 20 iterations.

Usual suspect is gcc version.  Check if /proc/version exactly matches
the gcc used to compile FUSE.

> I am not sure if FUSE 2.x have changed in this respect or is this still
> reproducable.
> I have seen similar discussion recently, but no Oops was published:
> http://sourceforge.net/mailarchive/message.php?msg_id=12464684

This one turned out to be gcc version mismatch.

Miklos


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
fuse-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/fuse-devel
Reply | Threaded
Open this post in threaded view
|

RE: Fusermount oops (FUSE 1.4)

Luka Renko
In reply to this post by Luka Renko
Miklos,

I have checked this and it does not look like to be the case here:

# cat /proc/version
Linux version 2.6.12-1.1447_FC4smp ([hidden email])
(gcc version 4.0.1 20050727 (Red Hat 4.0.1-5)) #1 SMP Fri Aug 26 20:57:13
EDT 2005

# gcc -v
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--enable-languages=c,c++,objc,java,f95,ada --enable-java-awt=gtk
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre
--host=i386-redhat-linux
Thread model: posix
gcc version 4.0.1 20050727 (Red Hat 4.0.1-5)

I have just in cas done it again after doing "yum update" to ensure that
everything is latest FC4. Here is the oops:

fuse init 1.4 (API version 2.2)
SELinux: initialized (dev fuse, type fuse), not configured for labeling
SELinux: initialized (dev fuse, type fuse), not configured for labeling
Unable to handle kernel paging request at virtual address 0008000a
 printing eip:
c030434a
*pde = 35582001
Oops: 0000 [#1]
SMP
Modules linked in: fuse(U) md5 ipv6 video button battery ac i2c_piix4
i2c_core e100 mii dm_snapshot dm_zero dm_mirror ext3 jbd dm_mod aic7xxx
scsi_transport_spi sd_mod scsi_mod
CPU:    1
EIP:    0060:[<c030434a>]    Not tainted VLI
EFLAGS: 00010206   (2.6.12-1.1447_FC4smp)
EIP is at unix_get_socket+0x2a/0x33
eax: 000a0000   ebx: 00000000   ecx: 00000000   edx: 0008000a
esi: f5596d54   edi: f5c49e40   ebp: 00000000   esp: f5596d14
ds: 007b   es: 007b   ss: 0068
Process fusermount (pid: 3201, threadinfo=f5596000 task=f7d93550)
Stack: c0304358 c0302bab f5c49e40 f5596d60 f5c49e84 00000000 c03032df
f5596d68
       f6121720 f5596f4c f5596dfc f6121740 f6121580 00000000 00000000
00000001
       00000c81 00000000 00000000 f5ca3c00 00000000 ffffff95 c03902a0
00000001
Call Trace:
 [<c0304358>] unix_inflight+0x5/0x18
 [<c0302bab>] unix_attach_fds+0x22/0x43
 [<c03032df>] unix_stream_sendmsg+0x213/0x3a6
 [<c02a2577>] sock_sendmsg+0xe4/0xff
 [<c0134feb>] autoremove_wake_function+0x0/0x37
 [<c01821f6>] __mark_inode_dirty+0x56/0x191
 [<c014560d>] find_get_page+0x37/0x42
 [<c01d7cae>] copy_from_user+0x42/0x84
 [<c02a3e0c>] sys_sendmsg+0x11e/0x213
 [<c01ba327>] avc_has_perm+0x4e/0x67
 [<c0154a44>] handle_mm_fault+0x18b/0x1d7
 [<c02a4348>] sys_socketcall+0x270/0x292
 [<c0161ff8>] filp_close+0x4f/0x6d
 [<c0104035>] syscall_call+0x7/0xb
Code: 90 8b 40 08 8b 50 10 0f b7 42 28 25 00 f0 00 00 3d 00 c0 00 00 74 03
31 c0 c3 83 ea 2c 8b 42 14 85 c0 74 f3 8b 52 08 85 d2 74 ec <83> 3a 01 74 e9
31 c0 eb e5 e8 c8 ff ff ff 85 c0 74 0e f0 ff 80

I will now download FUSE 2.3.0 and try to reproduce this with it.

Regards,
Luka

> -----Original Message-----
> From: Miklos Szeredi [mailto:[hidden email]]
> Sent: Wednesday, September 14, 2005 10:39
> To: [hidden email]
> Cc: [hidden email]
> Subject: Re: Fusermount oops (FUSE 1.4)
>
> > We have strange oops in fusermount on FC4
> (2.6.12-1.1447_FC4smp) with
> > FUSE
> > 1.4 (we are waiting to migrate to 2.x with inode API soon).
> >
> > We were able to reproduce it with example program by doing this:
> >
> > while true; do ./hello /mnt/x & CPID=$!; sleep 0.2; kill
> $CPID; sleep
> > 0.2; done
> >
> > And it oopsed after about 20 iterations.
>
> Usual suspect is gcc version.  Check if /proc/version exactly
> matches the gcc used to compile FUSE.
>
> > I am not sure if FUSE 2.x have changed in this respect or is this
> > still reproducable.
> > I have seen similar discussion recently, but no Oops was published:
> > http://sourceforge.net/mailarchive/message.php?msg_id=12464684
>
> This one turned out to be gcc version mismatch.
>
> Miklos
>


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
fuse-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/fuse-devel
Reply | Threaded
Open this post in threaded view
|

Re: Fusermount oops (FUSE 1.4)

Miklos Szeredi
> I will now download FUSE 2.3.0 and try to reproduce this with it.

Got it.  It's a bug in 1.4, probably only triggered in recent kernels.

Fix is to replace S_IFSOCK with S_IFREG in kernel/dev.c.  But
upgrading to 2.3 is the more proper solution.

I'm wondering how you are able to run 1.4 on such a new kernel?  It
needs tweeking to compile.

Miklos


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
fuse-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/fuse-devel
Reply | Threaded
Open this post in threaded view
|

RE: Fusermount oops (FUSE 1.4)

Luka Renko
In reply to this post by Luka Renko
> > I will now download FUSE 2.3.0 and try to reproduce this with it.
>
> Got it.  It's a bug in 1.4, probably only triggered in recent kernels.
>
> Fix is to replace S_IFSOCK with S_IFREG in kernel/dev.c.  But
> upgrading to 2.3 is the more proper solution.

That solved it - thanks!

We plan to switch to 2.4 (with inode interface) soon.

>
> I'm wondering how you are able to run 1.4 on such a new
> kernel?  It needs tweeking to compile.

It is only vfs_permission() change of interface which we workaround with
simple:

--- fuse-1.4/kernel/fuse_i.h:1.1       Wed Oct 27 11:42:31 2004
+++ fuse-1.4/kernel/fuse_i.h   Thu Jul  7 14:32:55 2005
@@ -36,6 +36,11 @@
 #include <linux/list.h>
 #include <linux/spinlock.h>

+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)
+/* work around vfs_permission changes */
+#define vfs_permission(INODE, MASK) generic_permission(INODE, MASK, NULL)
+#endif
+
 /** Read combining parameters */
 #define FUSE_BLOCK_SHIFT 16
 #define FUSE_BLOCK_SIZE 65536

Regards,
Luka


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server.
Download it for free - -and be entered to win a 42" plasma tv or your very
own Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
fuse-devel mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/fuse-devel