here is backtrace of gdb for "./mount /dev/sda1 /mnt" Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7dd58fb in strlen () from /lib/ld-musl-x86_64.so.1 (gdb) at #0 0x00007ffff7dd58fb in strlen () from /lib/ld-musl-x86_64.so.1 #1 0x00007ffff79614b6 in unmangle_string (s=0x6164732f7665642f
) at ./include/mangle.h:17 #2 mnt_parse_table_line (s=0x7fffffffe640 "/dev/sda1 /mnt ext4 rw 0 0", fs=0x608f00) at libmount/src/tab_parse.c:78 #3 mnt_table_parse_next (tb=tb@entry=0x7ffff7ffb360, f=f@entry=0x608a00, fs=fs@entry=0x608f00, filename=filename@entry=0x7ffff7973e78 "/etc/mtab", nlines=nlines@entry=0x7fffffffeab4) at at libmount/src/tab_parse.c:396 #4 0x00007ffff79618e7 in mnt_table_parse_stream (tb=tb@entry=0x7ffff7ffb360, f=f@entry=0x608a00, filename=, filename@entry=0x7ffff7973e78 "/etc/mtab") at libmount/src/tab_parse.c:529 #5 0x00007ffff7961e26 in mnt_table_parse_file (tb=0x7ffff7ffb360, filename=0x7ffff7973e78 "/etc/mtab") at libmount/src/tab_parse.c:584 #6 0x00007ffff796246f in mnt_table_parse_mtab (tb=0x7ffff7ffb360, filename=0x7ffff7973e78 "/etc/mtab") at libmount/src/tab_parse.c:968 #7 0x00007ffff794fbf5 in mnt_context_get_mtab (cxt=cxt@entry=0x7ffff7ffb260, tb=tb@entry=0x7fffffffec90) at libmount/src/context.c:958 #8 0x0000000000403c7d in print_all (show_label=0, pattern=0x0, cxt=0x7ffff7ffb260) at sys-utils/mount.c:130 #9 main (argc=0, argv=0x7fffffffed40) at sys-utils/mount.c:1004 (gdb) On Thu, May 30, 2013 at 7:17 AM, plan9assembler wrote: > correction: > > #if 1 > #define _IO(a,b) _IOC(0U,(a),(b),0) //? > #define _IOW(a,b,c) _IOC(1U,(a),(b),sizeof(c)) //? > #else > #define _IO(a,b) _IOC(0,(a),(b),0) //ok > #define _IOW(a,b,c) _IOC(1,(a),(b),sizeof(c)) //ok > #endif > > #define _IOR(a,b,c) _IOC(2U,(a),(b),sizeof(c)) //ok > - #define _IOW(a,b,c) _IOC(3U,(a),(b),sizeof(c)) //ok > + #define _IOWR(a,b,c) _IOC(3U,(a),(b),sizeof(c)) //ok > > > On Thu, May 30, 2013 at 7:07 AM, plan9assembler wrote: > >> could you send me the patch? i will test it. >> >> BTW, in latest musl-git version, i found something wrong with ioctl.h >> >> #if 1 >> #define _IO(a,b) _IOC(0U,(a),(b),0) //? >> #define _IOW(a,b,c) _IOC(1U,(a),(b),sizeof(c)) //? >> #else >> #define _IO(a,b) _IOC(0,(a),(b),0) //ok >> #define _IOW(a,b,c) _IOC(1,(a),(b),sizeof(c)) //ok >> #endif >> >> #define _IOR(a,b,c) _IOC(2U,(a),(b),sizeof(c)) //ok >> #define _IOW(a,b,c) _IOC(3U,(a),(b),sizeof(c)) //ok >> >> if i set 0, it works fine run as "./mount", but set 1 then, >> >> >> # ./mount /dev/sda1 /mnt >> EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) >> >> < 30 - 40 seconds waiting without return to shell> >> >> mount: /mnt: filesystem mounted, but mount(8) failedOperation timed out >> // <-- this is weird. >> # >> >> >> >> >> >> On Thu, May 30, 2013 at 5:04 AM, Szabolcs Nagy wrote: >> >>> * plan9assembler [2013-05-29 23:41:13 +0900]: >>> > util-linux umount gets segfaults randomly..(X) >>> > util-linux umount gets segfaults always..(O) >>> > >>> > # ./umount /mnt >>> > traps: umount[9444] general protection ip:7f9c48e618fb sp:7fff72447b88 >>> > error:0 in libc.so[7f9c48e16000+72000] >>> > Segmentation fault. >>> >>> it seems util-linux uses sscanf with %ms to parse mtab >>> in libmount in tab_parse.c >>> >>> after i fixed that mount and umount does not segfault here >>> (used fixed size malloc and %s instead) >>> >> >> >