---------------------------------------- > From: xx...@msn.com > To: ports@openbsd.org > Subject: [bug?] sysutils/ntfs-3g > Date: Tue, 31 Dec 2013 21:46:34 +0500 > > Hi, > > I'm pretty new to OpenBSD and was pretty keen to try out the new ntfs fuse > driver and while it appears to be working OK, it dumps core when I unmount > the filesystem. I've included the gdb output but don't know how to compile > with debug symbols so if that would help, let me know how to do it and I'll > send the new gdb output. > > I'm running on i386 with the SP kernel installed from the latest snapshot > from my local mirror on the 31 Dec 2013. > > Any troubleshooting tips would be appreciated. > > Regards, > helg > > $uname -a > OpenBSD hp.my.domain 5.4 GENERIC#201 i386 > > $ sudo gdb ntfs-3g -c /ntfs-3g.core > GNU gdb 6.3 > Copyright 2004 Free Software Foundation, Inc. > GDB is free software, covered by the GNU General Public License, and you are > welcome to change it and/or distribute copies of it under certain conditions. > Type "show copying" to see the conditions. > There is absolutely no warranty for GDB. Type "show warranty" for details. > This GDB was configured as "i386-unknown-openbsd5.4"... > (no debugging symbols found) > > Core was generated by `ntfs-3g'. > Program terminated with signal 11, Segmentation fault. > (no debugging symbols found) > Loaded symbols for /usr/local/bin/ntfs-3g > Reading symbols from /usr/lib/libfuse.so.1.1...done. > Loaded symbols for /usr/lib/libfuse.so.1.1 > Reading symbols from /usr/local/lib/libntfs-3g.so.0.0...done. > Loaded symbols for /usr/local/lib/libntfs-3g.so.0.0 > Reading symbols from /usr/lib/libc.so.73.0...done. > Loaded symbols for /usr/lib/libc.so.73.0 > Reading symbols from /usr/libexec/ld.so...done. > Loaded symbols for /usr/libexec/ld.so > #0 0x1989c169 in ?? () from /usr/local/bin/ntfs-3g > > $ ntfs-3g -o debug,no_detach /dev/wd0i /mnt > Version 2013.1.13 external FUSE 26 > Mounted /dev/wd0i (Read-Write, label "", NTFS 3.1) > Cmdline options: debug,no_detach > Mount options: > allow_other,nonempty,relatime,fsname=/dev/wd0i,blkdev,blksize=4096 > Ownership and permissions disabled, configuration type 1 > Unmounting /dev/wd0i () > Segmentation fault (core dumped) > > $ cat /var/run/dmesg.boot > OpenBSD 5.4-current (GENERIC) #201: Sat Dec 28 17:05:53 MST 2013 > dera...@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC > cpu0: Intel(R) Pentium(R) M processor 1.80GHz ("GenuineIntel" 686-class) 1.80 > GHz > cpu0: > FPU,V86,DE,PSE,TSC,MSR,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,TM,PBE,EST,TM2,PERF > real mem = 1038544896 (990MB) > avail mem = 1009700864 (962MB) > mainbus0 at root > bios0 at mainbus0: AT/286+ BIOS, date 03/15/06, BIOS32 rev. 0 @ 0xfd760, > SMBIOS rev. 2.31 @ 0xdf010 (28 entries) > bios0: vendor Hewlett-Packard version "F.23" date 03/15/2006 > bios0: Hewlett-Packard HP Pavilion dv1000 (PV325PA#ABG) > acpi0 at bios0: rev 0 > acpi0: sleep states S0 S3 S4 S5 > acpi0: tables DSDT FACP HPET APIC APIC BOOT SSDT SSDT > acpi0: wakeup devices PCIB(S5) LAN_(S5) PS2K(S3) PSM1(S3) PSM2(S3) USB0(S3) > USB1(S3) USB2(S3) USB7(S3) > acpitimer0 at acpi0: 3579545 Hz, 24 bits > acpihpet0 at acpi0: counter not incrementing > acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat > cpu0 at mainbus0: apid 0 (boot processor) > mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges > cpu0: apic clock running at 99MHz > ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 20, 24 pins > acpiprt0 at acpi0: bus 0 (PCI0) > acpiprt1 at acpi0: bus 2 (PCIB) > acpiec0 at acpi0 > acpicpu0 at acpi0: C3, C2, C1, PSS > acpitz0 at acpi0: critical temperature is 95 degC > acpiac0 at acpi0: AC unit online > acpibat0 at acpi0: BAT0 model "JM-6" serial 5339212963 type LION oem > "Hewlett-Packard" > acpibtn0 at acpi0: LID0 > acpibtn1 at acpi0: SLPB > acpivideo0 at acpi0: GFX0 > bios0: ROM list: 0xc0000/0xce00! 0xcd000/0x1000 0xdf000/0x1000! > 0xe0000/0x4000! > cpu0: Enhanced SpeedStep 1796 MHz: speeds: 1800, 1600, 1400, 1200, 1000, 800, > 600 MHz > pci0 at mainbus0 bus 0: configuration mode 1 (bios) > pchb0 at pci0 dev 0 function 0 "Intel 82855GM Host" rev 0x02 > "Intel 82855GM Memory" rev 0x02 at pci0 dev 0 function 1 not configured > "Intel 82855GM Config" rev 0x02 at pci0 dev 0 function 3 not configured > vga1 at pci0 dev 2 function 0 "Intel 82855GM Video" rev 0x02 > intagp0 at vga1 > agp0 at intagp0: aperture at 0xe8000000, size 0x8000000 > inteldrm0 at vga1 > drm0 at inteldrm0 > inteldrm0: 1280x768 > wsdisplay0 at vga1 mux 1: console (std, vt100 emulation) > wsdisplay0: screen 1-5 added (std, vt100 emulation) > "Intel 82855GM Video" rev 0x02 at pci0 dev 2 function 1 not configured > uhci0 at pci0 dev 29 function 0 "Intel 82801DB USB" rev 0x03: apic 1 int 16 > uhci1 at pci0 dev 29 function 1 "Intel 82801DB USB" rev 0x03: apic 1 int 19 > uhci2 at pci0 dev 29 function 2 "Intel 82801DB USB" rev 0x03: apic 1 int 18 > ehci0 at pci0 dev 29 function 7 "Intel 82801DB USB" rev 0x03: apic 1 int 23 > usb0 at ehci0: USB revision 2.0 > uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 > ppb0 at pci0 dev 30 function 0 "Intel 82801BAM Hub-to-PCI" rev 0x83 > pci1 at ppb0 bus 2 > rl0 at pci1 dev 0 function 0 "Realtek 8139" rev 0x10: apic 1 int 16, address > 00:00:9f:b3:99:0b > rlphy0 at rl0 phy 0: RTL internal PHY > iwi0 at pci1 dev 6 function 0 "Intel PRO/Wireless 2200BG" rev 0x05: apic 1 > int 18, address 00:13:a0:89:36:de > cbb0 at pci1 dev 9 function 0 "TI PCI7XX1 CardBus" rev 0x00: apic 1 int 20, > CardBus support disabled > "TI PCI7XX1 FireWire" rev 0x00 at pci1 dev 9 function 2 not configured > "TI PCI7XX1 Flash" rev 0x00 at pci1 dev 9 function 3 not configured > sdhc0 at pci1 dev 9 function 4 "TI PCI7XX1 SD" rev 0x00: apic 1 int 20 > sdmmc0 at sdhc0 > sdmmc1 at sdhc0 > sdmmc2 at sdhc0 > cardslot0 at cbb0 slot 0 flags 0 > pcmcia0 at cardslot0 > ichpcib0 at pci0 dev 31 function 0 "Intel 82801DBM LPC" rev 0x03 > pciide0 at pci0 dev 31 function 1 "Intel 82801DBM IDE" rev 0x03: DMA, channel > 0 configured to compatibility, channel 1 configured to compatibility > wd0 at pciide0 channel 0 drive 0: <ST9808211A> > wd0: 16-sector PIO, LBA48, 76319MB, 156301488 sectors > wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 5 > atapiscsi0 at pciide0 channel 1 drive 0 > scsibus0 at atapiscsi0: 2 targets > cd0 at scsibus0 targ 0 lun 0: <HL-DT-ST, DVD-RW GCA-4080N, 0C35> ATAPI > 5/cdrom removable > cd0(pciide0:1:0): using PIO mode 4, DMA mode 2 > ichiic0 at pci0 dev 31 function 3 "Intel 82801DB SMBus" rev 0x03: apic 1 int > 17 > iic0 at ichiic0 > spdmem0 at iic0 addr 0x50: 512MB DDR SDRAM non-parity PC2700CL2.5 > spdmem1 at iic0 addr 0x51: 512MB DDR SDRAM non-parity PC2700CL2.5 > auich0 at pci0 dev 31 function 5 "Intel 82801DB AC97" rev 0x03: apic 1 int > 17, ICH4 AC97 > ac97: codec id 0x43585430 (Conexant CXT48) > ac97: codec features reserved, headphone, 18 bit DAC, 18 bit ADC, No 3D Stereo > audio0 at auich0 > "Intel 82801DB Modem" rev 0x03 at pci0 dev 31 function 6 not configured > usb1 at uhci0: USB revision 1.0 > uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > usb2 at uhci1: USB revision 1.0 > uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > usb3 at uhci2: USB revision 1.0 > uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1 > isa0 at ichpcib0 > isadma0 at isa0 > pckbc0 at isa0 port 0x60/5 > pckbd0 at pckbc0 (kbd slot) > pckbc0: using irq 1 for kbd slot > wskbd0 at pckbd0: console keyboard, using wsdisplay0 > pms0 at pckbc0 (aux slot) > pckbc0: using irq 12 for aux slot > wsmouse0 at pms0 mux 0 > pms0: Synaptics touchpad, firmware 5.10 > pcppi0 at isa0 port 0x61 > spkr0 at pcppi0 > npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16 > umass0 at uhub0 port 2 configuration 1 interface 0 "ASMedia AS2105" rev > 2.10/0.01 addr 2 > umass0: using SCSI over Bulk-Only > scsibus1 at umass0: 2 targets, initiator 0 > sd0 at scsibus1 targ 1 lun 0: <FUJITSU, MHV2060BH, 0000> SCSI3 0/direct fixed > serial.174c5106NW18T5C27CWP > sd0: 57231MB, 512 bytes/sector, 117210240 sectors > umass1 at uhub0 port 3 configuration 1 interface 0 "Generic Mass Storage" rev > 2.00/1.02 addr 3 > umass1: using SCSI over Bulk-Only > scsibus2 at umass1: 2 targets, initiator 0 > sd1 at scsibus2 targ 1 lun 0: <Generic, Flash Disk, 8.07> SCSI2 0/direct > removable > sd1: 2000MB, 512 bytes/sector, 4096000 sectors > ugen0 at uhub3 port 2 "Broadcom HP integrated Bluetooth module" rev 1.10/0.17 > addr 2 > vscsi0 at root > scsibus3 at vscsi0: 256 targets > softraid0 at root > scsibus4 at softraid0: 256 targets > root on sd1a (782198f6ee81c328.a) swap on sd1b dump on sd1b >
OK, I've worked it out. make CFLAGS=-g -O0 seems to have done the trick. Here's the relevant gdb output on the new core. #0 0x1968a891 in ntfs_fuse_fill_security_context (scx=0xcfbd9180) at ntfs-3g.c:268 268 scx->uid = fusecontext->uid; I also added some additional debug statements to ntfs-3g and have tracked it down to ntfs_close() being called after the fuse loop. This ends up calling fuse_get_context() which will now return a NULL fusecontext. ntfs_close() is also invoked inside ntfs_fuse_destroy2() but this is never called by fuse. I've patched fuselib to call this and it no longer dumps core on unmount and that seems to have fixed it. Should I raise a bug? Here's the diff. Index: src/lib/libfuse/fuse_ops.c =================================================================== RCS file: /cvs/src/lib/libfuse/fuse_ops.c,v retrieving revision 1.18 diff -u -p -u -r1.18 fuse_ops.c --- src/lib/libfuse/fuse_ops.c 20 Dec 2013 22:03:26 -0000 1.18 +++ src/lib/libfuse/fuse_ops.c 1 Jan 2014 04:50:03 -0000 @@ -772,6 +772,10 @@ ifuse_ops_destroy(struct fuse *f) { DPRINTF("Opcode:\tdestroy\n"); + /* CHECK_OPT(destroy); */ + + /* Just ignore the return code, is that OK? */ + f->op.destroy(NULL); f->fc->dead = 1; return (0);