Hi
I am using the AUFS git tree from one week ago against the 2.6.31 kernel on an
embedded system here. (Using AUFS built in, not as a module).
I have several AUFS mounts setup as shown here:
[r...@oceanlinx src]# cat /proc/mounts
rootfs / rootfs rw 0 0
/proc /proc proc rw,relatime 0 0
none /dev tmpfs rw,relatime,mode=755 0 0
/dev/root / ext3 rw,relatime,errors=continue,data=writeback 0 0
none /dev tmpfs rw,relatime,mode=755 0 0
/proc /proc proc rw,relatime 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/sys /sys sysfs rw,relatime 0 0
none /dev/pts devpts rw,relatime,gid=5,mode=620 0 0
tmpfs /unions tmpfs rw,relatime,size=581896k 0 0
none /home aufs rw,relatime,si=ad727100 0 0
none /root aufs rw,relatime,si=acf5ef00 0 0
none /var aufs rw,relatime,si=acf5eb00 0 0
none /dev/shm tmpfs rw,relatime 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
/dev/hdd5 /media/dom ext2 rw,relatime,errors=continue 0 0
The problem is that after a few days of running, random binaries on the system
start to have problems. For example; today gdb SEGVs every time it is run. Here
is an strace of running up gdb:
[r...@oceanlinx ~]# strace gdb
execve("/usr/bin/gdb", ["gdb"], [/* 20 vars */]) = 0
uname({sys="Linux", node="oceanlinx", ...}) = 0
brk(0) = 0x8281000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=36727, ...}) = 0
old_mmap(NULL, 36727, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f33000
close(3) = 0
open("/usr/lib/libncurses.so.5", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240\261"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=879961, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f32000
old_mmap(0xd7d000, 264076, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0xd7d000
old_mmap(0xdb5000, 32768, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x38000) = 0xdb5000
old_mmap(0xdbd000, 1932, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xdbd000
close(3) = 0
open("/lib/libtermcap.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320{\267"..., 512) =
512
fstat64(3, {st_mode=S_IFREG|0755, st_size=12592, ...}) = 0
old_mmap(0xb77000, 14280, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0xb77000
old_mmap(0xb7a000, 4096, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0xb7a000
close(3) = 0
open("/lib/tls/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0003\260"..., 512) =
512
fstat64(3, {st_mode=S_IFREG|0755, st_size=179139, ...}) = 0
old_mmap(0xb00000, 139424, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0xb00000
old_mmap(0xb21000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x20000) = 0xb21000
close(3) = 0
open("/lib/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260[\262"..., 512) =
512
fstat64(3, {st_mode=S_IFREG|0755, st_size=15384, ...}) = 0
old_mmap(0xb25000, 12388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0)
= 0xb25000
old_mmap(0xb27000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0xb27000
close(3) = 0
open("/lib/tls/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \237\236"..., 512) =
512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1454835, ...}) = 0
old_mmap(0x9d5000, 1215644, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x9d5000
old_mmap(0xaf8000, 16384, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x123000) = 0xaf8000
old_mmap(0xafc000, 7324, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xafc000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0xb7f31000
mprotect(0xaf8000, 4096, PROT_READ) = 0
mprotect(0x9d1000, 4096, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7f31b60, limit:1048575,
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0,
useable:1}) = 0
munmap(0xb7f33000, 36727) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Once the system is rebooted everything becomes fine again for a few days, and
then the problem reoccurs.
As I say, I am using a recent git tree from last week, however I have seen
exactly the same problem for a while now using an older git tree against the
2.6.30 kernel, so it is not new.
If you want any more details let me know and I'll try to get them the next time
the problem shows up.
Cheers, Rich.
------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev