artagnon / phoenixfs

🔥 a versioning filesystem inspired by git
MIT License
201 stars 21 forks source link

Seg faults on Ubuntu 11.10 x86_64 #1

Closed dana closed 12 years ago

dana commented 12 years ago

dana@hithlum:~/fs$ git clone git://github.com/artagnon/phoenixfs.git Cloning into phoenixfs... remote: Counting objects: 453, done. remote: Compressing objects: 100% (198/198), done. remote: Total 453 (delta 293), reused 405 (delta 249) Receiving objects: 100% (453/453), 137.69 KiB, done. Resolving deltas: 100% (293/293), done. dana@hithlum:~/fs$ cd phoenixfs/ dana@hithlum:~/fs/phoenixfs$ git show | head -1 commit 0404ac7cdfcd6b4410504657cb95a86b0a613264 dana@hithlum:~/fs/phoenixfs$ make

CC common.o
CC main.o
CC fuse.o
CC buffer.o
CC compress.o
CC pack.o
CC sha1.o
CC diff.o
CC btree.o
CC crc32.o
CC fstree.o
CC persist.o
CC delta.o
CC loose.o
CC xdiff/xdiffi.o
CC xdiff/xprepare.o
CC xdiff/xutils.o
CC xdiff/xemit.o

gcc -g -O0 -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -c -o xdiff/xmerge.o xdiff/xmerge.c gcc -g -O0 -Wall -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -c -o xdiff/xpatience.o xdiff/xpatience.c rm -f xdiff/lib.a && ar rcs xdiff/lib.a xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o xdiff/xmerge.o xdiff/xpatience.o CC block-sha1/sha1.o rm -f block-sha1/lib.a && ar rcs block-sha1/lib.a block-sha1/sha1.o LINK phoenixfs dana@hithlum:~/fs/phoenixfs$ cd /tmp dana@hithlum:/tmp$ mkdir gitdir mountp dana@hithlum:/tmp$ ~/fs/phoenixfs/phoenixfs mount gitdir mountp Segmentation fault dana@hithlum:/tmp$ strace ~/fs/phoenixfs/phoenixfs mount gitdir mountp 2> strace.out Segmentation fault dana@hithlum:/tmp$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=11.10 DISTRIB_CODENAME=oneiric DISTRIB_DESCRIPTION="Ubuntu 11.10" dana@hithlum:/tmp$ uname -a Linux hithlum 3.0.0-24-generic #40-Ubuntu SMP Tue Jul 24 15:38:25 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux dana@hithlum:/tmp$ dpkg -l|grep fuse ii fuse-utils 2.8.4-1.4ubuntu1 Filesystem in USErspace (utilities) ii gvfs-fuse 1.10.0-0ubuntu1.1 userspace virtual filesystem - fuse server ii libfuse-dev 2.8.4-1.4ubuntu1 Filesystem in USErspace (development files) ii libfuse2 2.8.4-1.4ubuntu1 Filesystem in USErspace library dana@hithlum:/tmp$ tail -20 strace.out lstat("/tmp/mountp", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0 lstat("/tmp/mountp", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0 access("/tmp/mountp", R_OK|W_OK|X_OK) = 0 mkdir("/tmp/gitdir/.git", 0700) = -1 EEXIST (File exists) lstat("/tmp/gitdir/.git", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 access("/tmp/gitdir/.git", R_OK|W_OK|X_OK) = 0 mkdir("/tmp/gitdir/.git/loose", 0700) = -1 EEXIST (File exists) lstat("/tmp/gitdir/.git/loose", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 access("/tmp/gitdir/.git/loose", R_OK|W_OK|X_OK) = 0 open("/tmp/phoenixfs.log", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3 fstat(3, {st_mode=S_IFREG|0664, st_size=426, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f208e3f6000 fstat(3, {st_mode=S_IFREG|0664, st_size=426, ...}) = 0 lseek(3, 426, SEEK_SET) = 426 write(3, "l. 640: phoenixfs_fuse:: fsback"..., 71) = 71 close(3) = 0 munmap(0x7f208e3f6000, 4096) = 0 access("/tmp/gitdir/.git/fstree", F_OK) = -1 ENOENT (No such file or directory) --- SIGSEGV (Segmentation fault) @ 0 (0) --- +++ killed by SIGSEGV +++ dana@hithlum:/tmp$

artagnon commented 12 years ago

Hm, I'm running Ubuntu 11.10 x86_64 too; same version of fuse. Could you please run it under gdb and post the backtrace?

Thanks.

SameDifference commented 12 years ago

I am getting a similar error:

(gdb) r mount gitdir/ mountp/
Starting program: ./phoenixfs mount gitdir/ mountp/
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Program received signal SIGSEGV, Segmentation fault.
0x0000000000404af1 in phoenixfs_fuse (argc=4, argv=0x7fffffffe358) at fuse.c:654
654     while (!iter->is_leaf)
(gdb) backtrace
#0  0x0000000000404af1 in phoenixfs_fuse (argc=4, argv=0x7fffffffe358) at fuse.c:654
#1  0x00000000004022ff in main (argc=4, argv=0x7fffffffe358) at main.c:99
(gdb)

It seems to occur because fsroot and iter are NULL. I think it would work if you had an existing fstree, but not if you are trying to make a new one.

artagnon commented 12 years ago

Silly bug- fixed now.

Thanks.

dana commented 12 years ago

Thanks! I found a crash bug just now, I'll post the details tomorrow. Eh, I'll make a bug with the gross commands and put details in tomorrow.