[Bug 292032] armv7 on aarch64 (tested chroot, lib32) gets SIGSEGV for the likes of: gpart show [native armv7 kernel use contexts do not get any SIGSEGV's]
Date: Wed, 31 Dec 2025 04:07:14 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292032
--- Comment #6 from Mark Millard <marklmi26-fbsd@yahoo.com> ---
Example low level failure information (chroot context):
. . .
493 static void
494 delete_config(struct gconf *gp)
495 {
496 struct gconfig *cf;
497
498 for (;;) {
499 cf = LIST_FIRST(gp);
500 if (cf == NULL)
501 return;
502 LIST_REMOVE(cf, lg_config);
503 free(cf->lg_name);
504 free(cf->lg_val);
505 free(cf);
506 }
507 }
508
509 void
510 geom_deletetree(struct gmesh *gmp)
511 {
512 struct gclass *cl;
513 struct ggeom *ge;
514 struct gprovider *pr;
515 struct gconsumer *co;
516
517 free(gmp->lg_ident);
518 gmp->lg_ident = NULL;
519 for (;;) {
520 cl = LIST_FIRST(&gmp->lg_class);
521 if (cl == NULL)
522 break;
523 LIST_REMOVE(cl, lg_class);
524 delete_config(&cl->lg_config);
. . .
Context is line 524 and its use of delete_config .
(gdb) info reg r6
r6 0x200891b8 537432504
(gdb) nexti
Breakpoint 3.1, delete_config (gp=0x2053c1dc) at
/usr/src/lib/libgeom/geom_xml2tree.c:502
502 LIST_REMOVE(cf, lg_config);
=> 0x200c5ee8 <geom_deletetree+84>: e1c600d0 ldrd r0, [r6]
0x200c5eec <geom_deletetree+88>: e3500000 cmp r0, #0
0x200c5ef0 <geom_deletetree+92>: 15801004 strne r1, [r0, #4]
0x200c5ef4 <geom_deletetree+96>: e5810000 str r0, [r1]
(gdb) info reg r0
r0 0x2053c198 542359960
(gdb) nexti
0x200c5eec 502 LIST_REMOVE(cf, lg_config);
=> 0x200c5eec <geom_deletetree+88>: e3500000 cmp r0, #0
0x200c5ef0 <geom_deletetree+92>: 15801004 strne r1, [r0, #4]
0x200c5ef4 <geom_deletetree+96>: e5810000 str r0, [r1]
(gdb) info reg r0
r0 0xffffffff 4294967295
The later execution of "strne r1, [r0, #4]" rejects using
the 0xffffffff from r0:
(gdb) nexti
0x200c5ef0 502 LIST_REMOVE(cf, lg_config);
=> 0x200c5ef0 <geom_deletetree+92>: 15801004 strne r1, [r0, #4]
0x200c5ef4 <geom_deletetree+96>: e5810000 str r0, [r1]
(gdb) nexti
Program received signal SIGSEGV, Segmentation fault.
Address not mapped to object.
0x200c5ef0 in delete_config (gp=0x2053c1dc) at
/usr/src/lib/libgeom/geom_xml2tree.c:502
502 LIST_REMOVE(cf, lg_config);
=> 0x200c5ef0 <geom_deletetree+92>: 15801004 strne r1, [r0, #4]
0x200c5ef4 <geom_deletetree+96>: e5810000 str r0, [r1]
--
You are receiving this mail because:
You are the assignee for the bug.