----------------------------------------
> 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);                                       

Reply via email to