Migrating from -current to stable/12 on RPI2B (ARMv7)
Mark Millard
marklmi at yahoo.com
Tue Dec 29 21:25:00 UTC 2020
On 2020-Dec-29, at 02:15, Mark Millard <marklmi at yahoo.com> wrote:
> On 2020-Dec-29, at 00:16, Mark Millard <marklmi at yahoo.com> wrote:
>
>> On 2020-Dec-28, at 17:02, bob prohaska <fbsd at www.zefox.net> wrote:
>>
>>> On Mon, Dec 28, 2020 at 04:14:51PM -0800, Mark Millard wrote:
>>>> [I get the problem as well! I report a backtrace of the failure
>>>> and some more.]
>>>>
>>>
>>> Relieved to see it's reproducible.
>> . . .
>>
>> I tried reducing the size of things to be produced via building
>> the target based on the likes of using:
>>
>> WITHOUT_LLVM_TARGET_AARCH64=
>> WITH_LLVM_TARGET_ARM=
>> WITHOUT_LLVM_TARGET_MIPS=
>> WITHOUT_LLVM_TARGET_POWERPC=
>> WITHOUT_LLVM_TARGET_RISCV=
>> WITHOUT_LLVM_TARGET_X86=
>> MALLOC_PRODUCTION=
>> WITH_MALLOC_PRODUCTION=
>> WITHOUT_ASSERT_DEBUG=
>> WITHOUT_LLVM_ASSERTIONS=
>> WITHOUT_DEBUG_FILES=
>>
>> (But the host 13 was unchanged.)
>>
>> It still failed, but at a different memory allocation, of a
>> different size:
>>
>> r4 0x8000 32768
>>
>> (gdb) bt
>> #0 thr_kill () at thr_kill.S:4
>> #1 0x4227d998 in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52
>> #2 0x42332284 in abort () at /usr/src/lib/libc/stdlib/abort.c:67
>> #3 0x00da5e4c in report_bad_alloc_error () at /usr/src/contrib/llvm-project/llvm/lib/Support/ErrorHandling.cpp:174
>> #4 0x00da61c8 in out_of_memory_new_handler() () at /usr/src/contrib/llvm-project/llvm/lib/Support/ErrorHandling.cpp:187
>> #5 0x420f5d24 in operator new (size=<optimized out>) at /usr/src/contrib/llvm-project/libcxx/src/new.cpp:73
>> #6 0x00e16878 in SetBufferSize () at /usr/src/contrib/llvm-project/llvm/include/llvm/Support/raw_ostream.h:131
>> #7 SetBuffered () at /usr/src/contrib/llvm-project/llvm/lib/Support/raw_ostream.cpp:97
>> #8 0x00e17368 in write () at /usr/src/contrib/llvm-project/llvm/lib/Support/raw_ostream.cpp:251
>> #9 0x00ddfe20 in operator<< () at /usr/src/contrib/llvm-project/llvm/include/llvm/Support/raw_ostream.h:192
>> #10 operator<< () at /usr/src/contrib/llvm-project/llvm/include/llvm/Support/raw_ostream.h:205
>> #11 printSymbolizedStackTrace () at /usr/src/contrib/llvm-project/llvm/lib/Support/Signals.cpp:154
>> #12 0x00de163c in PrintStackTrace () at /usr/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:575
>> #13 0x00ddf604 in RunSignalHandlers () at /usr/src/contrib/llvm-project/llvm/lib/Support/Signals.cpp:67
>> #14 0x00de1f3c in SignalHandler () at /usr/src/contrib/llvm-project/llvm/lib/Support/Unix/Signals.inc:396
>> #15 0x42021db4 in handle_signal (actp=actp at entry=0x424df7b0, sig=<optimized out>, info=info at entry=0x424df7f0, ucp=<optimized out>) at /usr/src/lib/libthr/thread/thr_sig.c:303
>> #16 0x420213f8 in thr_sighandler (sig=0, info=0x424df7f0, _ucp=0x424df830) at /usr/src/lib/libthr/thread/thr_sig.c:246
>> #17 0xffffe190 in ?? ()
>> Backtrace stopped: previous frame identical to this frame (corrupt stack?)
>
>
> Updating the host 13 made no significant difference in
> behavior.
>
> Using:
>
> time -l /usr/bin/ld --eh-frame-hdr -Bstatic -o clang /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbeginT.o -L/usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/legacy/usr/lib -L/usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/libz -L/usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/libexecinfo -L/usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/libelf -L/usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/ncurses/ncursesw -L/usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/libthr -L/usr/lib --gc-sections cc1_main.o cc1as_main.o cc1gen_reproducer_main.o driver.o /usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/clang/libclang/libclang.a /usr/obj/rpi2_clang/arm.armv7/usr/fbsd/stable-12-src/arm.armv7/tmp/obj-tools/lib/clang/libllvm/libllvm.a -lz -lexecinfo -lelf -lncursesw -lpthread -legacy -lc++ -lm -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /usr/lib/crtend.o /usr/lib/crtn.o
>
> it reported after the failure output (an example):
>
> time: command terminated abnormally
> 26.59 real 9.40 user 12.48 sys
> 2052032 maximum resident set size
> 21793 average shared memory size
> 218 average unshared data size
> 127 average unshared stack size
> 703238 page reclaims
> 0 page faults
> 0 swaps
> 55 block input operations
> 3104 block output operations
> 0 messages sent
> 0 messages received
> 1 signals received
> 41126 voluntary context switches
> 447 involuntary context switches
>
> where looking up getrusage reports that:
>
> ru_maxrss the maximum resident set size utilized (in kilobytes).
>
> which means: 44.0625 MiByte below 2 GiBytes for the resident set.
>
> Adding --threads=1 made little difference:
>
> time: command terminated abnormally
> 28.84 real 9.28 user 12.78 sys
> 2065016 maximum resident set size
> 21872 average shared memory size
> 219 average unshared data size
> 127 average unshared stack size
> 709661 page reclaims
> 0 page faults
> 0 swaps
> 48 block input operations
> 3050 block output operations
> 0 messages sent
> 0 messages received
> 1 signals received
> 36717 voluntary context switches
> 114 involuntary context switches
> Abort trap
I found another difference between how 13 is built and
stable/12 is built, so I'm trying another build.
The below shows what I've changed in stable/12 , but 13
eliminated even having the conditional logic, always
using -O2 -pipe :
# git diff | more
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
index 9099b63a61a0..53d1e30b1d56 100644
--- a/share/mk/sys.mk
+++ b/share/mk/sys.mk
@@ -167,7 +167,7 @@ CFLAGS ?= -O
.else
CC ?= cc
.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "mips"
-CFLAGS ?= -O -pipe
+CFLAGS ?= -O2 -pipe
.else
CFLAGS ?= -O2 -pipe
.endif
I'll report if the use of ld to produce clang.full still
fails or not.
I've left the other things attempting to lead to less memory
use in place.
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
More information about the freebsd-arm
mailing list