btrfs-progs v3.14 mkfs.btrfs bug: --features long-option segfaults, -O short-option OK

2014-04-16 Thread Duncan
Using btrfs-progs v3.14:

mkfs.btrfs ... --features ...

segfaults.

mkfs.btrfs ... -O ...

works fine.

* I used other long options, so it's not simply a problem parsing long 
options.

* I tried the long option with various features; none worked, including 
--features list-all with no other options.  That too segfaulted, tho -O 
list-all worked.

Segfault line as logged:

mkfs.btrfs[5231]: segfault at 0 ip 7fb531c7ab1a sp 7fffaf1a7a78 
error 4 in libc-2.19.so[7fb531bf8000+19a000]

btrfs-progs v3.14 from git on kernel v3.14 from git, gentoo/~amd64, built 
with gcc-4.8.2, using glibc-2.19.

-- 
Duncan - List replies preferred.   No HTML msgs.
Every nonfree program has a lord, a master --
and if you use the program, he is your master.  Richard Stallman

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: btrfs-progs v3.14 mkfs.btrfs bug: --features long-option segfaults, -O short-option OK

2014-04-16 Thread Holger Hoffstätte
On Wed, 16 Apr 2014 06:41:44 +, Duncan wrote:

 Using btrfs-progs v3.14:
 
 mkfs.btrfs ... --features ...
 
 segfaults.

Can reproduce (also with glibc 2.19 on Gentoo ;-) and building with debug
found:

(gdb) bt
#0  0x76f3aaea in strlen () from /lib64/libc.so.6
#1  0x76f3a82e in strdup () from /lib64/libc.so.6
#2  0x004213e8 in main (ac=2, av=0x7fffe308) at mkfs.c:1312

Sure enough that line is handling 'O', where '--features' is supposed to
be handled. No idea why -O works, but debugging shows that optarg is null
at that point, so strdup goes poof.

-h

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: btrfs-progs v3.14 mkfs.btrfs bug: --features long-option segfaults, -O short-option OK

2014-04-16 Thread Holger Hoffstätte
On Wed, 16 Apr 2014 07:48:53 +, Holger Hoffstätte wrote:

 On Wed, 16 Apr 2014 06:41:44 +, Duncan wrote:
 
 Using btrfs-progs v3.14:
 
 mkfs.btrfs ... --features ...
 
 segfaults.
 
 Can reproduce (also with glibc 2.19 on Gentoo ;-) and building with debug
 found:
 
 (gdb) bt
 #0  0x76f3aaea in strlen () from /lib64/libc.so.6
 #1  0x76f3a82e in strdup () from /lib64/libc.so.6
 #2  0x004213e8 in main (ac=2, av=0x7fffe308) at mkfs.c:1312
 
 Sure enough that line is handling 'O', where '--features' is supposed to
 be handled. No idea why -O works, but debugging shows that optarg is null
 at that point, so strdup goes poof.

Well, duh! The long_options array does not declare that --features wants
an argument, so getopt does not create one.

holgerdiff -u mkfs.c\~ mkfs.c
--- mkfs.c~ 2014-04-16 09:41:42.0 +0200
+++ mkfs.c  2014-04-16 09:51:45.408854096 +0200
@@ -350,7 +350,7 @@
{ version, 0, NULL, 'V' },
{ rootdir, 1, NULL, 'r' },
{ nodiscard, 0, NULL, 'K' },
-   { features, 0, NULL, 'O' },
+   { features, 1, NULL, 'O' },
{ NULL, 0, NULL, 0}
 };

This fixes it.

-h

--
To unsubscribe from this list: send the line unsubscribe linux-btrfs in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html