Bug 112131 - btrfs-tools: btrfs filesystem usage - BUS error
Summary: btrfs-tools: btrfs filesystem usage - BUS error
Status: RESOLVED CODE_FIX
Alias: None
Product: File System
Classification: Unclassified
Component: btrfs (show other bugs)
Hardware: Sparc64 Linux
: P1 normal
Assignee: David Sterba
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-02-07 18:01 UTC by Anatoly Pugachev
Modified: 2016-05-03 16:17 UTC (History)
3 users (show)

See Also:
Kernel Version: 4.5.2
Subsystem:
Regression: No
Bisected commit-id:


Attachments

Description Anatoly Pugachev 2016-02-07 18:01:25 UTC
(cross posting / reporting upstream from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814028 )

Dear Maintainer,

/mnt is being mounted as btrfs:

mator@deb4g:/srv/1/linux-2.6$ findmnt /mnt
TARGET SOURCE       FSTYPE OPTIONS
/mnt   /dev/vdiskd1 btrfs  rw,relatime,space_cache,subvolid=5,subvol=/

command "btrfs fi usage /mnt" run as unprivileged user works as expected,
but with elevated privileges, it crashes with BUS error:

mator@deb4g:/srv/1/linux-2.6$ sudo btrfs fi usage /mnt
Bus error

since I'm on unstable/sid, getting btrfs-progs from git and trying to reproduce:

mator@deb4g:/srv/1$ git clone https://github.com/kdave/btrfs-progs.git
mator@deb4g:/srv/1$ cd btrfs-progs && ./autogen.sh && CFLAGS="-g" ./configure && make -j
mator@deb4g:/srv/1/btrfs-progs$ ./btrfs --version
btrfs-progs v4.4
mator@deb4g:/srv/1/btrfs-progs$ ./btrfs fi usage /mnt
WARNING: cannot read detailed chunk info, RAID5/6 numbers will be incorrect, run as root
Overall:
    Device size:                   3.00GiB
    Device allocated:            331.00MiB
    Device unallocated:            2.67GiB
    Device missing:                3.00GiB
    Used:                        384.00KiB
    Free (estimated):              2.68GiB      (min: 1.34GiB)
    Data ratio:                       1.00
    Metadata ratio:                   2.00
    Global reserve:               16.00MiB      (used: 0.00B)
mator@deb4g:/srv/1/btrfs-progs$ sudo ./btrfs fi usage /mnt
Bus error
mator@deb4g:/srv/1/btrfs-progs$ sudo -s
root@deb4g:/srv/1/btrfs-progs# ulimit -c unlimited
root@deb4g:/srv/1/btrfs-progs# ./btrfs fi usage /mnt
Bus error (core dumped)
root@deb4g:/srv/1/btrfs-progs# gdb -c core
Core was generated by `./btrfs fi usage /mnt'.
Program terminated with signal SIGUSR1, User defined signal 1.
#0  0x0000000000174730 in ?? ()
(gdb) bt
#0  0x0000000000174730 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
(gdb) set args fi usage /mnt
(gdb) file ./btrfs
Load new symbol table from "./btrfs"? (y or n) y
Reading symbols from ./btrfs...done.
(gdb) run
Starting program: /srv/1/btrfs-progs/btrfs fi usage /mnt
BFD: /usr/lib/debug/.build-id/10/2220230fb152bed171674ffb66092972cf0276.debug: unable to initialize decompress status for section .debug_aranges
BFD: /usr/lib/debug/.build-id/10/2220230fb152bed171674ffb66092972cf0276.debug: unable to initialize decompress status for section .debug_aranges
warning: File "/usr/lib/debug/.build-id/10/2220230fb152bed171674ffb66092972cf0276.debug" has no build-id, file skipped
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/sparc64-linux-gnu/libthread_db.so.1".
BFD: /usr/lib/debug/.build-id/27/97a1230a6c622a2d0362aace029b5fda6c3474.debug: unable to initialize decompress status for section .debug_aranges
BFD: /usr/lib/debug/.build-id/27/97a1230a6c622a2d0362aace029b5fda6c3474.debug: unable to initialize decompress status for section .debug_aranges
warning: File "/usr/lib/debug/.build-id/27/97a1230a6c622a2d0362aace029b5fda6c3474.debug" has no build-id, file skipped

Program received signal SIGBUS, Bus error.
0x0000000000174730 in load_chunk_info (fd=3, info_ptr=0x7fefffff0f0, info_count=0x7fefffff0e4) at cmds-fi-usage.c:188
188                             off += sh->len;
(gdb) bt
#0  0x0000000000174730 in load_chunk_info (fd=3, info_ptr=0x7fefffff0f0, info_count=0x7fefffff0e4) at cmds-fi-usage.c:188
#1  0x0000000000175dac in load_chunk_and_device_info (fd=3, chunkinfo=0x7fefffff0f0, chunkcount=0x7fefffff0e4, devinfo=0x7fefffff0e8, devcount=0x7fefffff0e0) at cmds-fi-usage.c:577
#2  0x0000000000177418 in cmd_filesystem_usage (argc=2, argv=0x7fefffff6f8) at cmds-fi-usage.c:961
#3  0x000000000010996c in handle_command_group (grp=0x324560 <filesystem_cmd_group>, argc=2, argv=0x7fefffff6f8) at btrfs.c:135
#4  0x000000000011197c in cmd_filesystem (argc=3, argv=0x7fefffff6f0) at cmds-filesystem.c:1294
#5  0x0000000000109d54 in main (argc=3, argv=0x7fefffff6f0) at btrfs.c:243
(gdb)

Thanks.
Comment 1 Anatoly Pugachev 2016-05-02 16:15:44 UTC
still valid for kernel 4.5.2 and btrfs-progs 4.5.2 (git b70aa412d77078c2afa3dd4dc40f47206062447d)
Comment 2 Anatoly Pugachev 2016-05-03 12:46:32 UTC
almost same backtrace on 

$ ./btrfs dev usage /mnt

root@deb4g:/home/mator/btrfs-progs# gdb -c core      
GNU gdb (Debian 7.10-1+b1) 7.10
This GDB was configured as "sparc64-linux-gnu".
Type "show configuration" for configuration details.
[New LWP 78957]
Core was generated by `./btrfs dev usage /mnt'.
Program terminated with signal SIGUSR1, User defined signal 1.
#0  0x00000000001759d4 in ?? ()
(gdb) set args dev usage /mnt
(gdb) file ./btrfs
Reading symbols from ./btrfs...done.
(gdb) run
Starting program: /home/mator/btrfs-progs/btrfs dev usage /mnt
Program received signal SIGBUS, Bus error.
0x00000000001759d4 in load_chunk_info (fd=3, info_ptr=0x7fefffff010, info_count=0x7fefffff004) at cmds-fi-usage.c:188
188                             off += sh->len;
(gdb) bt
#0  0x00000000001759d4 in load_chunk_info (fd=3, info_ptr=0x7fefffff010, info_count=0x7fefffff004) at cmds-fi-usage.c:188
#1  0x0000000000177050 in load_chunk_and_device_info (fd=3, chunkinfo=0x7fefffff010, chunkcount=0x7fefffff004, devinfo=0x7fefffff008, 
    devcount=0x7fefffff000) at cmds-fi-usage.c:577
#2  0x00000000001139c0 in _cmd_device_usage (fd=3, path=0x7fefffff8e3 "/mnt", unit_mode=512) at cmds-device.c:514
#3  0x0000000000113cb4 in cmd_device_usage (argc=2, argv=0x7fefffff6c8) at cmds-device.c:560
#4  0x0000000000109c4c in handle_command_group (grp=0x332878 <device_cmd_group>, argc=2, argv=0x7fefffff6c8) at btrfs.c:135
#5  0x0000000000113d80 in cmd_device (argc=3, argv=0x7fefffff6c0) at cmds-device.c:590
#6  0x000000000010a034 in main (argc=3, argv=0x7fefffff6c0) at btrfs.c:243
(gdb)
Comment 3 David Sterba 2016-05-03 16:17:16 UTC
Fiexed and tested by this patchset http://thread.gmane.org/gmane.comp.file-systems.btrfs/55970 , will be released as btrfs-progs 4.5.3 or 4.6. Thanks.

Note You need to log in before you can comment on or make changes to this bug.