Hello list,
So we do seem to have a panic on boot in mojave which is confusing me somewhat.
If I load kext after boot, no problems.
If I slow down boot, like use boot-args=-v on a MacBookAir, no problems.
Slow VM, no problems.
So clearly I have a race, possible loading so early not everything is ready.
Reading the screen, I appear to die:
Kernel trap at 0xXXXXXXXX, type 14=page fault
mach_kernel : _sleep + 0x63
mach_kernel : _msleep + 0x62
net.lundman.spl : _spl_cv_wait + 0x22
This is early in my kext init phase, I have created a new thread, hold a
mutex and call msleep() to wait on the thread to signal it has started.
Now, I do not have the kernel sources, so I can only guess at the location,
but the _sleep code probably has not changed. I die in here:
_sleep + 0x63 (+99 decimal).
(lldb) dis -a _sleep
kernel`_sleep:
kernel[0xffffff80008ce3e8] <+88>: je 0xffffff80008ce3f2 ;
<+98> at OSAtomicOperations.c
kernel[0xffffff80008ce3ea] <+90>: lock
kernel[0xffffff80008ce3eb] <+91>: incq 0x80(%rax)
kernel[0xffffff80008ce3f2] <+98>: movl %r14d, %esi
kernel[0xffffff80008ce3f5] <+101>: andl $0x400, %esi ; imm
= 0x400
which *probably* matches:
p = current_proc();
p->p_priority = pri & PRIMASK;
/* It can still block in proc_exit() after the teardown. */
if (p->p_stats != NULL)
OSIncrementAtomicLong(&p->p_stats->p_ru.ru_nvcsw);
But it isn't clear to me why it would die in OSIncrementAtomicLong().
'current_proc()' will never return NULL, and we pass the test of p->p_stats.
Is it possible "->p_ru" is not yet ready for me to call msleep()?
Now, I could presumably sleep a little in my init, but that isn't exactly a
solution. Perhaps I can have the kext loaded a little later, although we
want it loaded before mountroot so we can have the rootfs.
Currently, we have plist.info set as:
<key>IOProviderClass</key>
<string>IOResources</string>
<key>IOResourceMatch</key>
<string>IOBSD</string>
<key>OSBundleRequired</key>
<string>Root</string>
In addition to that, it would be nice if I could connect to the lldb of the
macbookair (VMs do not boot fast enough to panic). But not sure if using a
thunderbolt->ethernet adapter will work, when it is this early in the boot
process.
I have attempted to use "kdp_match_name=en2 kdp_ip_addr=192.168.x.x" but I
am unable to connect.
Any information would be appreciated, even in haiku form.
Lund
--
Jorgen Lundman | <[email protected]>
Unix Administrator | +81 (0)90-5578-8500
Shibuya-ku, Tokyo | Japan
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Filesystem-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/filesystem-dev/archive%40mail-archive.com
This email sent to [email protected]