Menu

#2 Segfault getcallername

open
nobody
None
5
2011-09-03
2011-09-03
No

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb63ffb70 (LWP 23305)]
0x4bd7d265 in fread () from /lib/libc.so.6
(gdb) where
#0 0x4bd7d265 in fread () from /lib/libc.so.6
#1 0x08049a72 in getcallername() ()
#2 0x08049c21 in loggedfs_log(char const*, char const*, int, char const*, ...) ()
#3 0x0804a2ff in loggedFS_unlink(char const*) ()
#4 0x4c0b87c7 in fuse_fs_unlink () from /lib/libfuse.so.2
#5 0x4c0b88b1 in ?? () from /lib/libfuse.so.2
#6 0x4c0b8a1e in ?? () from /lib/libfuse.so.2
#7 0x4c0beeb7 in ?? () from /lib/libfuse.so.2
#8 0x4c0bdd6b in ?? () from /lib/libfuse.so.2
#9 0x4c0c1e88 in fuse_session_process () from /lib/libfuse.so.2
#10 0x4c0bccd5 in ?? () from /lib/libfuse.so.2
#11 0x4beb7a2e in start_thread () from /lib/libpthread.so.0
#12 0x4bdf634e in clone () from /lib/libc.so.6

Running on Fedora 15, 32 bit, built from source. Fuse 2.8.5.

Discussion

  • Dennis Schafroth

    I was assuming that the open file in getcallername failed, so trying with the following change:

    diff -Naur loggedfs-0.5/src/loggedfs.cpp loggedfs/src/loggedfs.cpp
    --- loggedfs-0.5/src/loggedfs.cpp 2008-09-03 19:58:57.000000000 +0000
    +++ loggedfs/src/loggedfs.cpp 2011-09-03 16:54:54.261865952 +0000
    @@ -114,14 +114,19 @@
    sprintf(filename,"/proc/%d/cmdline",fuse_get_context()->pid);
    FILE * proc=fopen(filename,"rt");
    char cmdline[256]="";
    - fread(cmdline,sizeof(cmdline),1,proc);
    - fclose(proc);
    + if (proc != NULL) {
    + fread(cmdline,sizeof(cmdline),1,proc);
    + fclose(proc);
    + }
    + else {
    + sprintf(cmdline, "Failed to open %s: No caller name", filename);
    + }
    return strdup(cmdline);
    }

    static void loggedfs_log(const char* path,const char* action,const int returncode,const char *format,...)
    {

     
  • Dennis Schafroth

    This shows some interesting:

    unlink /export/home/dennis/Maildir/.Teknik.Glusterfs/.fuse_hidden0000021800000005 {SUCCESS} [ pid = 0 Failed to open /proc/0/cmdline: No caller name uid = 0 ]

    No longer crashes.

     

Log in to post a comment.