[Bug 214862] clang 3.9.0 vs. TARGET_ARCH=powerpc: fsck_ufs and "df -m" are example failures: __floatdidf gets SIGSEGV's in both of them

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sat Nov 26 23:42:37 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214862

            Bug ID: 214862
           Summary: clang 3.9.0 vs. TARGET_ARCH=powerpc: fsck_ufs and "df
                    -m" are example failures: __floatdidf gets SIGSEGV's
                    in both of them
           Product: Base System
           Version: CURRENT
          Hardware: powerpc
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: bin
          Assignee: freebsd-bugs at FreeBSD.org
          Reporter: markmi at dsl-only.net

[This is largely extracted from a list report that I made.]

I updated to head -r309197 (with a work around for -r309144 breaking the
build).

This was on amd64, then used it to try to cross buildworld using clang 3.9.0
for
TARGET_ARCH=powerpc . The build completed. (I've been using clang 3.8.0 this
way
for a long time.)

[The kernel here was cross built via gcc 4.2.1, as has been my normal
procedure.
The kernel still has my "red zone for signal delivery" hack that was a
workaround
for clang 3.8.0 stack-handling ABI violations.]

Booting, however, had problems because of fsck_ufs getting signal 11 and ended
up
initially in single user mode.

Exiting single user did finish the boot. But "df -m" core dumps. (I've not
explored much else.)

Turns out that both fsck_ufs and "df -m" fail in the same routine for a
SIGSEGV:
__floatdidf


The details. . .

First the boot and fsck_ufs:

Copyright (c) 1992-2016 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
       The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-CURRENT #9 r309179M: Sat Nov 26 12:53:11 PST 2016
  
markmi at FreeBSDx64:/usr/obj/powerpcvtsc_clang_gcc421_kernel/powerpc.powerpc/usr/src/sys/GENERICvtsc-NODBG
powerpc
gcc version 4.2.1 20070831 patched [FreeBSD]
cpu0: IBM PowerPC 970MP revision 1.1, 18446744071914.91 MHz
cpu0: Features dc000000<PPC32,PPC64,ALTIVEC,FPU,MMU>
cpu0: HID0 1511081<DEEPNAP,NAP,DPM,NHR,TBEN,ENATTN>
real memory  = 2118565888 (2020 MB)
avail memory = 2014863360 (1921 MB)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
. . .
Trying to mount root  from ufs:/dev/ufs/FBSDG4Srootfs [rw,noatime]...
. . .
pid 53 (fsck_ufs), uid 0: exited on signal 11


Manually running fsck later gets a segmentation fault core file in /var/crash/
and I used this too see a point of failure (__floatdidf):

# fsck /
** /dev/ufs/FBSDG4Srootfs (NO WRITE)
** Last Mounted on /
** Root file system
** Phase 1 - Check Blocks and Sizes
INCORRECT BLOCK COUNT I=11538459 (8 should be 0)
CORRECT? no

** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
LINK COUNT FILE I=10016041  OWNER=operator MODE=100400
SIZE=4096 MTIME=Nov 26 14:44 2016  COUNT 2 SHOULD BE 1
ADJUST? no

LINK COUNT FILE I=10016049  OWNER=operator MODE=100400
SIZE=4096 MTIME=Nov 26 14:55 2016  COUNT 2 SHOULD BE 1
ADJUST? no

LINK COUNT FILE I=10016089  OWNER=operator MODE=100400
SIZE=4096 MTIME=Nov 26 15:00 2016  COUNT 2 SHOULD BE 1
ADJUST? no

UNREF FILE  I=11538459  OWNER=root MODE=100600
SIZE=0 MTIME=Nov 26 15:11 2016 
RECONNECT? no


CLEAR? no

** Phase 5 - Check Cyl groups
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? no

SUMMARY INFORMATION BAD
SALVAGE? no

BLK(S) MISSING IN BIT MAPS
SALVAGE? no

fsck: /dev/ufs/FBSDG4Srootfs: Segmentation fault


# gdb fsck_ufs /var/crash/fsck_ufs.1129.core 
GNU gdb 6.1.1 [FreeBSD]
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 "powerpc-marcel-freebsd"...
Core was generated by `fsck_ufs /dev/ufs/FBSDG4Srootfs'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libufs.so.6...Reading symbols from
/usr/lib/debug//lib/libufs.so.6.debug...done.
done.
Loaded symbols for /lib/libufs.so.6
Reading symbols from /lib/libc.so.7...Reading symbols from
/usr/lib/debug//lib/libc.so.7.debug...done.
done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /libexec/ld-elf.so.1...Reading symbols from
/usr/lib/debug//libexec/ld-elf.so.1.debug...done.
done.
Loaded symbols for /libexec/ld-elf.so.1
#0  0x0181b024 in __floatdidf ()
(gdb) bt
#0  0x0181b024 in __floatdidf ()
#1  0x0180a8e0 in main (argc=<value optimized out>, argv=<value optimized out>)
at /usr/src/sbin/fsck_ffs/main.c:519
#2  0x01801664 in _start ()
#3  0x418303a0 in .text () at
/usr/src/libexec/rtld-elf/powerpc/rtld_start.S:112

main.c's line 519 is part of:

       printf("(%ju frags, %ju blocks, %.1f%% fragmentation)\n",
           (uintmax_t)n_ffree, (uintmax_t)n_bfree,
           n_ffree * 100.0 / sblock.fs_dsize);



As for "df -m" --it failed in __floatdidf as well:

# gdb df /var/crash/df.1056.core                                               
                                                                        GNU gdb
6.1.1 [FreeBSD]
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 "powerpc-marcel-freebsd"...
Core was generated by `df -m'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libxo.so.0...Reading symbols from
/usr/lib/debug//lib/libxo.so.0.debug...done.
done.
Loaded symbols for /lib/libxo.so.0
Reading symbols from /lib/libutil.so.9...Reading symbols from
/usr/lib/debug//lib/libutil.so.9.debug...done.
done.
Loaded symbols for /lib/libutil.so.9
Reading symbols from /lib/libc.so.7...Reading symbols from
/usr/lib/debug//lib/libc.so.7.debug...done.
done.
Loaded symbols for /lib/libc.so.7
Reading symbols from /libexec/ld-elf.so.1...Reading symbols from
/usr/lib/debug//libexec/ld-elf.so.1.debug...done.
done.
Loaded symbols for /libexec/ld-elf.so.1
#0  0x01802a18 in __floatdidf ()
(gdb) bt
#0  0x01802a18 in __floatdidf ()
#1  0x01802538 in prtstat (sfsp=0x41e24000, mwp=0xffffd930) at
/usr/src/bin/df/df.c:503
#2  0x01801df0 in main (argc=<value optimized out>, argv=<value optimized out>)
at /usr/src/bin/df/df.c:308
#3  0x01800cdc in _start ()
#4  0x418153a0 in .text () at
/usr/src/libexec/rtld-elf/powerpc/rtld_start.S:112

df.c's line 503 was part of:

       xo_emit(" {:used-percent/%5.0f}{U:%%}",
           availblks == 0 ? 100.0 : (double)used / (double)availblks * 100.0);



Context details:

# head
~/sys_typescripts/typescript_make_powerpcvtsc_nodebug_clang_bootstrap_world-amd64-host-2016-11-26:11:38:36 
Script started on Sat Nov 26 11:38:36 2016
Command: env __MAKE_CONF=/root/src.configs/make.conf SRCCONF=/dev/null
SRC_ENV_CONF=/root/src.configs/src.conf.powerpc-clang-bootstrap.amd64-host
WITH_META_MODE=yes MAKEOBJDIRPREFIX=/usr/obj/powerpcvtsc_clang_world make -j 5
buildworld
--- buildworld ---

. . .


# more ~/src.configs/src.conf.powerpc-clang-bootstrap.amd64-host
TO_TYPE=powerpc
#
KERNCONF=GENERICvtsc-NODBG
TARGET=${TO_TYPE}
.if ${.MAKE.LEVEL} == 0
TARGET_ARCH=${TO_TYPE}
.export TARGET_ARCH
.endif
#
WITH_CROSS_COMPILER=
WITHOUT_SYSTEM_COMPILER=
#
WITH_LIBCPLUSPLUS=
WITH_BINUTILS_BOOTSTRAP=
WITH_CLANG_BOOTSTRAP=
WITH_CLANG=
WITH_CLANG_IS_CC=
WITH_CLANG_FULL=
WITH_CLANG_EXTRAS=
# lldb requires missing atomic 8-byte operations for powerpc (non-64)
WITHOUT_LLDB=
#
WITH_BOOT=
WITHOUT_LIB32=
#
WITHOUT_ELFTOOLCHAIN_BOOTSTRAP=
WITHOUT_GCC_BOOTSTRAP=
WITHOUT_GCC=
WITHOUT_GCC_IS_CC=
WITHOUT_GNUCXX=
#
NO_WERROR=
#WERROR=
MALLOC_PRODUCTION=
#
WITH_DEBUG_FILES=


# more ~/src.configs/make.conf 
CFLAGS.gcc+= -v

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list