From nobody Mon Jul 22 00:12:41 2024 X-Original-To: current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4WS12P140Dz5Qrnk for ; Mon, 22 Jul 2024 00:13:01 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic317-21.consmr.mail.gq1.yahoo.com (sonic317-21.consmr.mail.gq1.yahoo.com [98.137.66.147]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4WS12M5gWWz4dHw for ; Mon, 22 Jul 2024 00:12:59 +0000 (UTC) (envelope-from marklmi@yahoo.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=yahoo.com header.s=s2048 header.b=L60X2V3D; dmarc=pass (policy=reject) header.from=yahoo.com; spf=pass (mx1.freebsd.org: domain of marklmi@yahoo.com designates 98.137.66.147 as permitted sender) smtp.mailfrom=marklmi@yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1721607177; bh=PEjHMjBWeARPajcpmbzG2+bB0iFskfiMlCrDt8Q1gII=; h=Subject:From:In-Reply-To:Date:Cc:References:To:From:Subject:Reply-To; b=L60X2V3D/l+r4FDmt3S/tmkK8eocOu7EeKepvb+F1Tt41Yuh0eCpCRQr8ZqdCTsVG29AncnA+lPi/104r6M8jlbJk+oht7MQS4iXnBYKYaA6RnG1TMDMGufQJVkUT4CIn0RLVuKmi/njoqQtAt7aidrB1WI09gwL6saZoTBCr0JqHP5QOB/gjIHwdsXMpyAFlq+476K/AdWxNJxXweijMrjpD5nZ1M2hjJ0VD8ZLGo4hBnwvx1mpYhn5HpvCy59RucJsnRoHYyJT0WIRy4RHMeGZgna+fqniYxIK2SYwunt3xINaOo+c1n54vMLNOvvAAv+FMv5qvr/Awz2DewroLA== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1721607177; bh=Jmx/DRlhG0AubfcVCPtfvboBS3N1OorMmBd4LRWoBgA=; h=X-Sonic-MF:Subject:From:Date:To:From:Subject; b=Vch8R4ahfezMJGXeXFzIP/XrKuF4v49wG0Fn22c7w4t5AurMX4Ud/ThGkb8Ir24uIpCoHwxxVU57elZjoxYgHJJxJ38UuQad+5QOTGsqHVPsxWcv7sQs5rfE3hHEeSBcIXRMvpbb4T+oVeQg68i+FTpugqKgqyKjOZdvyBoJ6aEYSVW0e7sCD690L2105wvPSROQ3ciRYs/Hlo/QTTAhpnNbPthVw4hwenD4xiJ/8iZE82+uN71z3Bw3XYymLgcuqSiEweFj+VGNX787Ig0RWbrUU3FHw+lfWEOD9PisO5rXi6MTYbAWyZ7R51l4qlWvqEdNvSs2u36o9ip8zG/NhA== X-YMail-OSG: EY51KSYVM1nPM1whoJNw2AW9qzaESBCqNU1HEg80jrWhDLEvoPjbB7buEKnWKcA 7YBR4Ss_WC9izmtTDZBWcNYRBj60OZaRlmaGu8byeW4QsXih6lrGRwtCADBPvoCQjS4Yc9uxEgP4 shkmhmPoCdQLHD18CQin8XoqHlPXjsYqKxm5WnQWJYERNJnZUtLZMJ4GkXtolD1qe5WxJz7AkPP2 tu6KpmxDQq_Wd_E4kjDWZYCsXacpBXmuZaVvz0_Lt3CSUkOteA330fDbsLUSO9iU5WUQ.YWjnwUE XtnHrxIRMRToQQSFL6I1NEIJ28eqw7BlKawiFGexgkZhXA3fZcAdKyJ8VSz9vu7K0G7medEGfeAv gCOPWIDhoS9lKj3FKblnAjKv8POAJ.7l2J8MkxmJw_gOumR6vik0JHXUXaJsATdP6.FDXUF_kN5e umgQ3upBkVEXiXc.KRFaL_KFyJ6JYcFsyaX8Y_CfrXs2_.XubT6B_JnF8x9J.IZPWe2gOx7SFBfp 5uq48ITFooVobCcuuKpn9fCu.ohBKkoR55EXWtSW_sZony.GJSd8deoaS3IFyiWagN5jQukjq1M0 KiFFsSOl0Pda2wB87ZEOM9PAuthlGiEnZceEN8PWO9sOVVcvg0XXMJPSZ1AvGLWE5nxX7Ke8rf.t ounpoVFBnCr2foS15umCIs8MeUWymqdV06R4NKtEiHlbpgIgk_7bquc.QOg.RNFFYCH6QAry152w 8BcmWc.AzKt45s6TS7ZOSbzmxEFJsBmgWFIIK2Tof4M96OUbViNpWlUwCyYUxiSCdZ_17JZTdb8U Ncjp5TMXc66flanBbBD6M2eRoCCtWmQUJ5HF1Vod93AynGr2Pu8HYaVSnSqBrzyXpsneedFAFT5L wvlMHYUgQy.DzBGpszY0PEM1RhjC6sUuQoeOrnsmI3aYlAZ.3jK7PdFE10zRCuAhIvD52MeZ49mx SOJAjROhDGf_yxpZAhJNm9yRPmU__58aGYQanvlm5YHfr9V0j.aCLBVKN.t171KTNh4967m.urJI 4rLY_PzOxnDFig4tQTqnYf0PGS__3y4mKoGMfn7Wt76GpkiAtuWMEDnYn7l_6rzAy8UBTHDMno0i UZV3e2Me2w8RBxOdethGDMg8FxGh0vNQENBB4r6kT7fBcVUmZA1CAYMpEVPZ77OCcgzompVmmIlM diNQGW3hSboTaLwL6MhAp0hLYZA6pQh9ErYmb2tTZeQuZAaWfoZYQtL60FDKckKCs9QU51.J4HTj HQ6JA6iApY3ijV3GKhM1TpHDGlAi_wYIIrf6yfXStiZ67B4Q38wUmlJ2GTYl6hsd4.p9PONHINQ9 Hbcd1yJVwNY7GK6t3gHKeVdPPbnmPeOSxHZf2v6T1MAIUYm1701QqtsvxaUE8wwpmli8zpTVQkHu 7xvT3Gk6D4YNTgDgX_TIQEV33ICGQLojBo2nTHx9N9ErXyj8jVJjg1IlMm5p7Q2hxdUzKDfV4AhL 5bBDpSucOyLCAJjSjAjhIyrU3jLMz.IQYxDRgXKtATN9B_dxpoDnXnIlRo1.6c6DsFPf5d6VinyZ aWGnQfzbcyWJjIDtIzVE1UHXmjUz4kWjp0PbC00IZ4sgZTbN4V5kHvVMti2E0JwqkzUDkvkAc7Ps rUAcPLBuYQ3Fst9MT6dha6GXnp2G7ivOgRNeNTEHhbAvO5TLUAS0bk5GjaANsLaKBqJoCd.5Q4Gm VZAA6phl1bFOsoZsbN2kgJbgJ710iGseObLIbLtVENiwyrP4ZBTdoTXEfDei62ihcGsdmKdUv3sN Gk70wDbVyLPAoGTiWuuvZOFeJdKEw_u9FCv12oEMLQsIM6PvbnvbCByTqGXSwQP2Untj0imPzlU0 EJ6wFhODESQVU.DzUPGx5P2vjB.pWrcqTjFgsV5n8s_fS_s5Qx4n6qbv2.hVYYHLgOunoupfEa.0 hCjyx9Tz6S8the3urFGeWTrcCjqBCKSH_LsHRdqIdIOVP5b1vO5HuZecnrhGEOtanBaVlfCmkcXV veqOZ2LaLikekPEmqe5kMrPZ9_Un.BVcFYa_5HjIyLFt.KKvkWVPDnWyzsaj1vGp3CfLzjulamTq 622FfDJIPuL5fLuJ.PYSaACRQYvg0CLue9ZsAoTntAMycixD9k2rm.wmcM3dRT9.L_mSLgwfDkhL 9JDhjTXhHuFMepnDMfDkZKwvnkr0qDR6aJy3NNjnl2zFbXKFpbaId3szr5E.79uZU5Eid67pA6Cp NnecPWuu.GPeptm6_2.mIyvSPEAZ_yBv2LwuBiXF0sVkZibdcaNhJuYyL2BRQ4jTvq097TrfuGX8 o6g-- X-Sonic-MF: X-Sonic-ID: 4a934df9-d093-4aff-8d1c-ac6993f130f3 Received: from sonic.gate.mail.ne1.yahoo.com by sonic317.consmr.mail.gq1.yahoo.com with HTTP; Mon, 22 Jul 2024 00:12:57 +0000 Received: by hermes--production-gq1-799bb7c8cf-hh58k (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 18c9d6e88dfa470d4495856163e5bd03; Mon, 22 Jul 2024 00:12:52 +0000 (UTC) Content-Type: text/plain; charset=us-ascii List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.600.62\)) Subject: Re: armv7-on-aarch64 stuck at urdlck: I got a replication of the "ampere2" bulk build hangup problem on a Windows DevKit 2023 From: Mark Millard In-Reply-To: Date: Sun, 21 Jul 2024 17:12:41 -0700 Cc: arm@freebsd.org, current@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <8214703E-AB28-4FB3-A3DD-03C87363D8C6@yahoo.com> <8E9579B7-2ABF-4446-B65E-E993E7B67C5C@yahoo.com> To: Konstantin Belousov X-Mailer: Apple Mail (2.3774.600.62) X-Spamd-Bar: --- X-Spamd-Result: default: False [-4.00 / 15.00]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.998]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; MIME_GOOD(-0.10)[text/plain]; RCVD_TLS_LAST(0.00)[]; FROM_HAS_DN(0.00)[]; ARC_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; DWL_DNSWL_NONE(0.00)[yahoo.com:dkim]; FREEMAIL_TO(0.00)[gmail.com]; FREEMAIL_FROM(0.00)[yahoo.com]; TO_DN_SOME(0.00)[]; DKIM_TRACE(0.00)[yahoo.com:+]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/20, country:US]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; RCPT_COUNT_THREE(0.00)[3]; MLMMJ_DEST(0.00)[current@freebsd.org]; APPLE_MAILER_COMMON(0.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; RWL_MAILSPIKE_POSSIBLE(0.00)[98.137.66.147:from]; RCVD_IN_DNSWL_NONE(0.00)[98.137.66.147:from] X-Rspamd-Queue-Id: 4WS12M5gWWz4dHw [Correction to a rather misleading wording in my description of the failure sequencing.] On Jul 21, 2024, at 03:36, Mark Millard wrote: > On Jul 20, 2024, at 16:42, Mark Millard wrote: >=20 >> On Jul 20, 2024, at 01:57, Konstantin Belousov = wrote: >>=20 >>> [Everything and everybody in Cc: are stripped for good]. >>>=20 >>> On Fri, Jul 19, 2024 at 10:38:36PM -0700, Mark Millard wrote: >>>> 0x201375c0 - 0x2014092c is .bss in /lib/libthr.so.3 >>>>=20 >>>> (gdb) bt >>>> #0 0x201aeec0 in __pthread_map_stacks_exec () from /lib/libc.so.7 >>>> #1 0x2005d1e4 in ?? () from /libexec/ld-elf.so.1 >>>> Backtrace stopped: previous frame identical to this frame (corrupt = stack?) >>>> (gdb) disass >>>> Dump of assembler code for function __pthread_map_stacks_exec: >>>> =3D> 0x201aeec0 <+0>: ldr r0, [pc, #8] @ 0x201aeed0 = <__pthread_map_stacks_exec+16> >>>> 0x201aeec4 <+4>: add r0, pc, r0 >>>> 0x201aeec8 <+8>: ldr r0, [r0, #156] @ 0x9c >>>> 0x201aeecc <+12>: bx r0 >>>> 0x201aeed0 <+16>: andseq r6, r7, r4, lsr #12 >>>> End of assembler dump. >>>>=20 >>>=20 >>> Do the following: >>> 1. Rebuild rtld/libc/libthr with the debugging info and no = optimization, >>> i.e. ensure that flags are "-O0 -g" or "-Og -g" and not -O2. See >>> the first comment in libexec/rtld-elf/Makefile for the hint how to >>> do it. >>=20 >> I did a full buildworld with "-Og -g" via temporary >> use of: >>=20 >> diff --git a/share/mk/sys.mk b/share/mk/sys.mk >> index 44db9266784f..9c6c7ce575a4 100644 >> --- a/share/mk/sys.mk >> +++ b/share/mk/sys.mk >> @@ -145,7 +145,8 @@ CC ?=3D c89 >> CFLAGS ?=3D -O >> .else >> CC ?=3D cc >> -CFLAGS ?=3D -O2 -pipe >> +#CFLAGS ?=3D -O2 -pipe >> +CFLAGS ?=3D -Og -g -pipe >> .if defined(NO_STRICT_ALIASING) >> CFLAGS +=3D -fno-strict-aliasing >> .endif >>=20 >> I installed the result armv7 world into a >> directory tree and installed pkg and cairo. >>=20 >>> 2. Reproduce the issue >>=20 >> The dlopen_test.c based case does not fail under the world >> built with "-Og -g": >>=20 >> # cc -g -std=3Dc11 -pedantic -Wall -pthread dlopen_test.c ; ./a.out >> #=20 >>=20 >>> under gdb >>=20 >> (gdb) run >> Starting program: /root/a.out [Inferior 1 (process 36680) exited = normally] >> (gdb)=20 >>=20 >> So it does not reproduce in gdb when buildworld was based >> on "-Og -g". >=20 > I found another context that has useful debugger information > and also fails. It avoids graphviz being involved: >=20 > ) a pkgbase install that I had around (pkgbase has debug information) > ) also set up /home/pkgbuild/worktrees/main/ to refer to the /usr/src/ = that pkgbase put in place > ) pkg install cairo > ) use of my simple dlopen program >=20 > (gdb) run > Starting program: /root/a.out =20 > Catchpoint 7 > Inferior loaded /lib/libgcc_s.so.1 > /lib/libthr.so.3 > /lib/libc.so.7 > /lib/libsys.so.7 > r_debug_state (rd=3D, m=3D) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4485 > 4485 } > (gdb) c > Continuing. >=20 > Breakpoint 3, get_program_var_addr (name=3D0x20042f2a "__progname", = lockstate=3D0x0) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4523 > 4523 symlook_init(&req, name); > (gdb) c > Continuing. >=20 > Breakpoint 3, get_program_var_addr (name=3D0x20043c97 "environ", = lockstate=3D0x0) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4523 > 4523 symlook_init(&req, name); > (gdb) c > Continuing. >=20 > Breakpoint 3, get_program_var_addr (name=3D0x20043c9f = "__elf_aux_vector", lockstate=3D0x0) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4523 > 4523 symlook_init(&req, name); > (gdb) c > Continuing. >=20 > Breakpoint 3, get_program_var_addr (name=3D0x200442e8 "__libc_atexit", = lockstate=3Dlockstate@entry=3D0xffffd668) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4523 > 4523 symlook_init(&req, name); > (gdb) c > Continuing. >=20 > Catchpoint 7 > Inferior loaded /usr/local/lib/libcairo.so.2 > /usr/local/lib/libpixman-1.so.0 > /usr/local/lib/libfontconfig.so.1 > /usr/local/lib/libfreetype.so.6 > /usr/local/lib/libEGL.so.1 > /usr/lib/libdl.so.1 > /usr/local/lib/libpng16.so.16 > /usr/local/lib/libxcb-shm.so.0 > /usr/local/lib/libxcb.so.1 > /usr/local/lib/libxcb-render.so.0 > /usr/local/lib/libXrender.so.1 > /usr/local/lib/libX11.so.6 > /usr/local/lib/libXext.so.6 > /lib/libz.so.6 > /usr/local/lib/libGL.so.1 > /lib/libm.so.5 > /usr/local/lib/libexpat.so.1 > /usr/lib/libbz2.so.4 > /usr/local/lib/libbrotlidec.so.1 > /usr/local/lib/libGLdispatch.so.0 > /usr/local/lib/libXau.so.6 > /usr/local/lib/libXdmcp.so.6 > /usr/local/lib/libGLX.so.0 > /usr/local/lib/libbrotlicommon.so.1 > r_debug_state (rd=3D, m=3D) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4485 > 4485 } > (gdb) c > Continuing. >=20 > Breakpoint 3, get_program_var_addr (name=3D0x200435bf = "__pthread_map_stacks_exec", lockstate=3D0xffffd290) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:4523 > 4523 symlook_init(&req, name); > (gdb) c > Continuing. >=20 > Breakpoint 8.3, _thr_stack_fix_protection (thrd=3D0x20070000) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:140 > 140 round_up(thrd->attr.guardsize_attr), > (gdb) bt > #0 _thr_stack_fix_protection (thrd=3D0x20070000) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:140 > #1 __thr_map_stacks_exec () at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:178 > #2 0x2005d1e4 in map_stacks_exec (lockstate=3D0xffffd290) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:5946 > #3 dlopen_object (name=3Dname@entry=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D, fd@entry=3D-1, = refobj=3D, lo_flags=3D, mode=3D1, = lockstate=3D0xffffd290) > at /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3872 > #4 0x20059e4c in rtld_dlopen (name=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D-1, mode=3D1) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3751 > #5 0x00020510 in main () at dlopen_test.c:14 > (gdb) s > 139 mprotect((char *)thrd->attr.stackaddr_attr + > (gdb) s > 141 round_up(thrd->attr.stacksize_attr), > (gdb) s > 140 round_up(thrd->attr.guardsize_attr), > (gdb) s > round_up (size=3D4096) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:129 > 129 if (size % _thr_page_size !=3D 0) > (gdb) s > 130 size =3D ((size / _thr_page_size) + 1) * > (gdb) bt > #0 round_up (size=3D4096) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:130 > #1 _thr_stack_fix_protection (thrd=3D0x20070000) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:140 > #2 __thr_map_stacks_exec () at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:178 > #3 0x2005d1e4 in map_stacks_exec (lockstate=3D0xffffd290) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:5946 > #4 dlopen_object (name=3Dname@entry=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D, fd@entry=3D-1, = refobj=3D, lo_flags=3D, mode=3D1, = lockstate=3D0xffffd290) > at /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3872 > #5 0x20059e4c in rtld_dlopen (name=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D-1, mode=3D1) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3751 > #6 0x00020510 in main () at dlopen_test.c:14 > (gdb) si > 129 if (size % _thr_page_size !=3D 0) > (gdb) 130 size =3D ((size / _thr_page_size) + 1) * > (gdb) bt > #0 round_up (size=3D4096) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:130 > #1 _thr_stack_fix_protection (thrd=3D0x20070000) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:140 > #2 __thr_map_stacks_exec () at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:178 > #3 0x2005d1e4 in map_stacks_exec (lockstate=3D0xffffd290) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:5946 > #4 dlopen_object (name=3Dname@entry=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D, fd@entry=3D-1, = refobj=3D, lo_flags=3D, mode=3D1, = lockstate=3D0xffffd290) > at /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3872 > #5 0x20059e4c in rtld_dlopen (name=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D-1, mode=3D1) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3751 > #6 0x00020510 in main () at dlopen_test.c:14 > (gdb) disass /s > Dump of assembler code for function __thr_map_stacks_exec: > . . . > 130 size =3D ((size / _thr_page_size) + 1) * > 0x20112eec <+340>: mov r0, r6 >=20 > 129 if (size % _thr_page_size !=3D 0) > 0x20112ef0 <+344>: ldr r4, [pc, r4] >=20 > 130 size =3D ((size / _thr_page_size) + 1) * > =3D> 0x20112ef4 <+348>: mov r1, r4 > 0x20112ef8 <+352>: bl 0x20116b60 >=20 > NOTE: 0x20116760 - 0x20116f30 is .plt in /lib/libthr.so.3 >=20 > --Type for more, q to quit, c to continue without paging-- > 0x20112efc <+356>: mov r9, r0 > 0x20112f00 <+360>: mov r0, r5 > 0x20112f04 <+364>: mov r1, r4 > 0x20112f08 <+368>: bl 0x20116b60 >=20 > NOTE: 0x20116760 - 0x20116f30 is .plt in /lib/libthr.so.3 >=20 > 0x20112f0c <+372>: mls r1, r0, r4, r5 > . . . > (gdb) si > 0x20112ef8 130 size =3D ((size / _thr_page_size) + 1) * > (gdb) 0x20116b60 in ?? () from /lib/libthr.so.3 > (gdb) bt > #0 0x20116b60 in ?? () from /lib/libthr.so.3 > #1 0x20112efc in round_up (size=3D4096) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:130 > #2 _thr_stack_fix_protection (thrd=3D0x20070000) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:140 > #3 __thr_map_stacks_exec () at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_stack.c:178 > #4 0x2005d1e4 in map_stacks_exec (lockstate=3D0xffffd290) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:5946 > #5 dlopen_object (name=3Dname@entry=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D, fd@entry=3D-1, = refobj=3D, lo_flags=3D, mode=3D1, = lockstate=3D0xffffd290) > at /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3872 > #6 0x20059e4c in rtld_dlopen (name=3D0x1042d = "/usr/local/lib/libcairo.so.2", fd=3D-1, mode=3D1) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:3751 > #7 0x00020510 in main () at dlopen_test.c:14 > (gdb) si > 0x20116b64 in ?? () from /lib/libthr.so.3 > (gdb) si > 0x20116b68 in ?? () from /lib/libthr.so.3 > (gdb) si > 0x20116760 in ?? () from /lib/libthr.so.3 > (gdb) si > 0x20116764 in ?? () from /lib/libthr.so.3 > (gdb) si > 0x20116768 in ?? () from /lib/libthr.so.3 > (gdb) si > 0x2011676c in ?? () from /lib/libthr.so.3 > (gdb) si > _rtld_bind_start () at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/arm/rtld_start.S:78 > 78 stmdb sp!,{r0-r5,sl,fp} > (gdb) bt > #0 _rtld_bind_start () at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/arm/rtld_start.S:78 > #1 0x201373b0 in ?? () from /lib/libthr.so.3 >=20 > NOTE: 0x201373a8 - 0x201375a0 is .got.plt in /lib/libthr.so.3 >=20 > Backtrace stopped: previous frame identical to this frame (corrupt = stack?) >=20 > Turns out that _thr_rtld_rlock_acquire is looping when the > process is stuck: >=20 > . . . > (gdb) bt > #0 _thr_rtld_rlock_acquire (lock=3D0x20137c40) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_rtld.c:121 > #1 0x20060788 in rlock_acquire (lock=3D0x2008af10 , = lockstate=3Dlockstate@entry=3D0xffffd0ec) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld_lock.c:259 > #2 0x20059098 in _rtld_bind (obj=3D0x2008f404, reloff=3D496) at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/rtld.c:1035 > #3 0x2005483c in _rtld_bind_start () at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/arm/rtld_start.S:89 > #4 0x2005483c in _rtld_bind_start () at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/arm/rtld_start.S:89 > #5 0x2005483c in _rtld_bind_start () at = /home/pkgbuild/worktrees/main/libexec/rtld-elf/arm/rtld_start.S:89 > . . . >=20 > (gdb) info threads > Id Target Id Frame * 1 LWP 100174 of process = 97711 _thr_rtld_rlock_acquire (lock=3D0x20137c40) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_rtld.c:121 >=20 > So: Only the one main thread. >=20 > It is repeating the _thr_rwlock_rdlock loop (lines 121/122): The above wording is greatly misleading for what I was trying to refer to (by being greatly incomplete). Correcting via a different description . . . For starting with (via breakpoint activity stopping there): #0 _umtx_op () at _umtx_op.S:4 #1 0x2036845c in _umtx_op_err (obj=3D0x20137c40, op=3D12, val=3D0, = uaddr=3D0x0, uaddr2=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libsys/_umtx_op_err.c:36 #2 0x20115da8 in __thr_rwlock_rdlock (rwlock=3Drwlock@entry=3D0x20137c40,= flags=3D0, tsp=3D) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.c:294 #3 0x2010ebf4 in _thr_rwlock_rdlock (rwlock=3D0x20137c40, flags=3D0, = tsp=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.h:229 #4 _thr_rtld_rlock_acquire (lock=3D0x20137c40) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_rtld.c:121 . . . I get the sequence below that involves one ^C to get out of the hung-up status for some activity (that eventually hangs up again). It is true that _thr_rtld_rlock_acquire does not return but loops for this kind of sequence. It is just an insufficient overall description. (gdb) finish Run till exit from #0 _umtx_op () at _umtx_op.S:4 ^C Program received signal SIGINT, Interrupt. Sent by kernel. _umtx_op () at _umtx_op.S:4 4 in _umtx_op.S (gdb) finish Run till exit from #0 _umtx_op () at _umtx_op.S:4 0x2036845c in _umtx_op_err (obj=3D, op=3D, = val=3D, uaddr=3D, uaddr2=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libsys/_umtx_op_err.c:36 36 if (_umtx_op(obj, op, val, uaddr, uaddr2) =3D=3D -1) (gdb) finish Run till exit from #0 0x2036845c in _umtx_op_err (obj=3D, op=3D, val=3D, uaddr=3D, uaddr2=3D0x0) at /home/pkgbuild/worktrees/main/lib/libsys/_umtx_op_err.c:36 0x20115da8 in __thr_rwlock_rdlock (rwlock=3Drwlock@entry=3D0x20137c40, = flags=3D, tsp=3D) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.c:294 294 return (_umtx_op_err(rwlock, UMTX_OP_RW_RDLOCK, flags, Value returned is $3 =3D 4 (gdb) finish Run till exit from #0 0x20115da8 in __thr_rwlock_rdlock = (rwlock=3Drwlock@entry=3D0x20137c40, flags=3D, = tsp=3D) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.c:294 _thr_rtld_rlock_acquire (lock=3D0x20137c40) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_rtld.c:121 121 while (_thr_rwlock_rdlock(&l->lock, 0, NULL) !=3D 0) Value returned is $4 =3D 4 (gdb) finish Run till exit from #0 _thr_rtld_rlock_acquire (lock=3D0x20137c40) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_rtld.c:121 Breakpoint 1, _thr_rwlock_rdlock (rwlock=3D0x20137c40, flags=3D0, = tsp=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.h:229 229 return (__thr_rwlock_rdlock(rwlock, flags, tsp)); (gdb) finish Run till exit from #0 _thr_rwlock_rdlock (rwlock=3D0x20137c40, flags=3D0,= tsp=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.h:229 Breakpoint 2.1, __thr_rwlock_rdlock (rwlock=3Drwlock@entry=3D0x20137c40, = flags=3D0, tsp=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.c:284 284 if (tsp =3D=3D NULL) { (gdb) finish Run till exit from #0 __thr_rwlock_rdlock = (rwlock=3Drwlock@entry=3D0x20137c40, flags=3D0, tsp=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libthr/thread/thr_umtx.c:284 Breakpoint 4.2, _umtx_op_err (obj=3D0x20137c40, op=3D12, val=3D0, = uaddr=3D0x0, uaddr2=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libsys/_umtx_op_err.c:36 36 if (_umtx_op(obj, op, val, uaddr, uaddr2) =3D=3D -1) (gdb) finish Run till exit from #0 _umtx_op_err (obj=3D0x20137c40, op=3D12, val=3D0, = uaddr=3D0x0, uaddr2=3D0x0) at = /home/pkgbuild/worktrees/main/lib/libsys/_umtx_op_err.c:36 Breakpoint 5.2, _umtx_op () at _umtx_op.S:4 warning: 4 _umtx_op.S: No such file or directory (gdb)=20 > (gdb) list 115 > 110 _thr_rtld_rlock_acquire(void *lock) > 111 { > 112 struct pthread *curthread; > 113 struct rtld_lock *l; > 114 int errsave; > 115=20 > 116 curthread =3D _get_curthread(); > 117 SAVE_ERRNO(); > 118 l =3D (struct rtld_lock *)lock; > 119=20 > (gdb)=20 > 120 THR_CRITICAL_ENTER(curthread); > 121 while (_thr_rwlock_rdlock(&l->lock, 0, NULL) !=3D 0) > 122 ; > 123 curthread->rdlock_count++; > 124 RESTORE_ERRNO(); > 125 } >=20 >=20 >>> , and backtrace all threads from userspace. >>> I only need userspace backtrace, not either kernel-side stacks nor >>> the syscall history. >>>=20 >>> Are you sure that the issue is specific to armv7, might be it takes = more >>> efforts to reproduce on host native? >=20 >=20 I'll note that my personal builds of armv7 are set up to use -mcpu=3Dcorext-a7 . It appears in my experiments that such may generally avoid the hangups. It may be why my initial attempts to reproduce the problem months back did not manage to reproduce it. It may also contribute to the "-Og -g" test not getting a hangup failure. My reproductions are based on having installed and used official pkgbase builds mostly, and a little official snapshot based activity (not updated via pkgbase). This avoids such personal oddities as -mcpu=3Dcorext-a7 use from being involved in my builds. =3D=3D=3D Mark Millard marklmi at yahoo.com