Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 1 May 2020 02:36:12 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, FreeBSD Hackers <freebsd-hackers@freebsd.org>, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: 32-bit powerpc head -r360311: lock order reversal between: "PROC (UMA zone)" and "kernelpmap (kernelpmap)": Is this expected?
Message-ID:  <FC86DC3B-D1E9-4471-9AEF-B10A2984E0ED@yahoo.com>
In-Reply-To: <013FB43E-7DB1-4A66-A6ED-12A891539788@yahoo.com>
References:  <013FB43E-7DB1-4A66-A6ED-12A891539788@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help


On 2020-Apr-30, at 18:30, Mark Millard <marklmi at yahoo.com> wrote:

> Using artifact.ci's head -r360311 debug-kernel materials:
>=20
> =
https://artifact.ci.freebsd.org/snapshot/head/r360311/powerpc/powerpc/kern=
el*.txz
>=20
> I got the following notice:
>=20
> lock order reversal:
> 1st 0x1cbb680 PROC (UMA zone) @ /usr/src/sys/vm/uma_core.c:4387
> 2nd 0x113c99c kernelpmap (kernelpmap) @ =
/usr/src/sys/powerpc/aim/mmu_oea.c:1524
> stack backtrace:
> #0 0x5d1e5c at witness_debugger+0x94
> #1 0x5d1b34 at witness_checkorder+0xb50
> #2 0x51d774 at __mtx_lock_flags+0xcc
> #3 0x90902c at moea_kextract+0x5c
> #4 0x9462ac at pmap_kextract+0x98
> #5 0x8a417c at zone_release+0xf0
> #6 0x8abc14 at bucket_drain+0x2f0
> #7 0x8ab64c at bucket_free+0x54
> #8 0x8ab8bc at bucket_cache_reclaim+0x1bc
> #9 0x8ab3c4 at zone_reclaim+0x128
> #10 0x8a7e60 at uma_reclaim+0x1d0
> #11 0x8d96ac at vm_pageout_worker+0x4d8
> #12 0x8d91c0 at vm_pageout+0x1b0
> #13 0x4f67a0 at fork_exit+0xb0
> #14 0x94892c at fork_trampoline+0xc
>=20
> Is the above interesting or is it one of the
> known-safe lock order reversals that should
> be ignored?
>=20
> (The notice is from something like 4.5 hours
> before I noticed it.)
>=20

While running kyua to see what it might run into . . .

lock order reversal:
 1st 0x1c34800 filedesc0 (UMA zone) @ /usr/src/sys/vm/uma_core.c:4387
 2nd 0x113c99c kernelpmap (kernelpmap) @ =
/usr/src/sys/powerpc/aim/mmu_oea.c:1524
stack backtrace:
#0 0x5d1e5c at witness_debugger+0x94
#1 0x5d1b34 at witness_checkorder+0xb50
#2 0x51d774 at __mtx_lock_flags+0xcc
#3 0x90902c at moea_kextract+0x5c
#4 0x9462ac at pmap_kextract+0x98
#5 0x8a417c at zone_release+0xf0
#6 0x8abc14 at bucket_drain+0x2f0
#7 0x8ab64c at bucket_free+0x54
#8 0x8ab8bc at bucket_cache_reclaim+0x1bc
#9 0x8ab3c4 at zone_reclaim+0x128
#10 0x8a7d58 at uma_reclaim+0xc8
#11 0x656d24 at vnlru_proc+0x908
#12 0x4f67a0 at fork_exit+0xb0
#13 0x94892c at fork_trampoline+0xc

witness_debugger through zone_reclaim
look the same as the prior report.
uma_reclaim has different associated
figures.

There is also:

lock order reversal:
 1st 0xfbed24 allprison (allprison) @ /usr/src/sys/kern/kern_jail.c:984
 2nd 0x10706c4 vnet_sysinit_sxlock (vnet_sysinit_sxlock) @ =
/usr/src/sys/net/vnet.c:577
stack backtrace:
#0 0x5d1e5c at witness_debugger+0x94
#1 0x5d1b34 at witness_checkorder+0xb50
#2 0x555300 at _sx_slock_int+0xa0
#3 0x555b10 at _sx_slock+0x28
#4 0x6b7d84 at vnet_alloc+0xf4
#5 0x4fd09c at kern_jail_set+0x1868
#6 0x4fe938 at sys_jail_set+0x70
#7 0x9492fc at trap+0x748
#8 0x93d1c0 at powerpc_interrupt+0x178

And:

lock order reversal:
 1st 0x106f5d8 ifnet_sx (ifnet_sx) @ /usr/src/sys/netinet/in.c:914
 2nd 0x107071c in_control (in_control) @ /usr/src/sys/netinet/in.c:243
stack backtrace:
#0 0x5d1e5c at witness_debugger+0x94
#1 0x5d1b34 at witness_checkorder+0xb50
#2 0x553ca4 at _sx_xlock+0x98
#3 0x6c45b8 at in_ifscrub_all+0xec
#4 0x6dbbc4 at ip_destroy+0xb0
#5 0x6b81c0 at vnet_destroy+0x154
#6 0x4fefb0 at prison_deref+0x2cc
#7 0x5007dc at prison_remove_one+0x148
#8 0x500658 at sys_jail_remove+0x2a4
#9 0x9492fc at trap+0x748
#10 0x93d1c0 at powerpc_interrupt+0x178

I also do not know about the below GEOM topology
related lock order reversals . . .

lock order reversal:
 1st 0xfbca1c GEOM topology (GEOM topology) @ =
/usr/src/sys/geom/eli/g_eli.c:746
 2nd 0xd49000 allproc (allproc) @ /usr/src/sys/kern/kern_fork.c:382
stack backtrace:
#0 0x5d1e5c at witness_debugger+0x94
#1 0x5d1b34 at witness_checkorder+0xb50
#2 0x553ca4 at _sx_xlock+0x98
#3 0x4f4fb4 at fork1+0x7dc
#4 0x5041c8 at kproc_create+0xd4
#5 0xdd27c390 at g_eli_create+0x774
#6 0xdd281048 at g_eli_config+0x23fc
#7 0x499188 at g_ctl_req+0x154
#8 0x49e784 at g_run_events+0x194
#9 0x4a1580 at g_event_procbody+0x74
#10 0x4f67a0 at fork_exit+0xb0
#11 0x94892c at fork_trampoline+0xc

lock order reversal:
 1st 0xfbca1c GEOM topology (GEOM topology) @ =
/usr/src/sys/geom/eli/g_eli.c:746
 2nd 0xd2baccc8 filedesc structure (filedesc structure) @ =
/usr/src/sys/kern/kern_descrip.c:2064
stack backtrace:
#0 0x5d1e5c at witness_debugger+0x94
#1 0x5d1b34 at witness_checkorder+0xb50
#2 0x555300 at _sx_slock_int+0xa0
#3 0x555b10 at _sx_slock+0x28
#4 0x4dc128 at fdinit+0xe8
#5 0x4dc638 at fdcopy+0x68
#6 0x4f52ac at fork1+0xad4
#7 0x5041c8 at kproc_create+0xd4
#8 0xdd27c390 at g_eli_create+0x774
#9 0xdd281048 at g_eli_config+0x23fc
#10 0x499188 at g_ctl_req+0x154
#11 0x49e784 at g_run_events+0x194
#12 0x4a1580 at g_event_procbody+0x74
#13 0x4f67a0 at fork_exit+0xb0
#14 0x94892c at fork_trampoline+0xc

lock order reversal:
 1st 0xfbca1c GEOM topology (GEOM topology) @ =
/usr/src/sys/geom/eli/g_eli.c:746
 2nd 0xd49080 proctree (proctree) @ /usr/src/sys/kern/kern_fork.c:557
stack backtrace:
#0 0x5d1e5c at witness_debugger+0x94
#1 0x5d1b34 at witness_checkorder+0xb50
#2 0x553ca4 at _sx_xlock+0x98
#3 0x4f5650 at fork1+0xe78
#4 0x5041c8 at kproc_create+0xd4
#5 0xdd27c390 at g_eli_create+0x774
#6 0xdd281048 at g_eli_config+0x23fc
#7 0x499188 at g_ctl_req+0x154
#8 0x49e784 at g_run_events+0x194
#9 0x4a1580 at g_event_procbody+0x74
#10 0x4f67a0 at fork_exit+0xb0
#11 0x94892c at fork_trampoline+0xc

=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?FC86DC3B-D1E9-4471-9AEF-B10A2984E0ED>