Hello everybody! Sorry to potentially bring bad news, but, using Mojave as my primary system on MacBook7,1 for a day I've definitely started to see a problem. Basically, it runs perfectly for a while (30 minutes - a couple hours) and then suddenly gets
insanely slow, to the point where it's not always possible to even shutdown properly.
I think I've found the explanation: in Console, right as this happens, there are messages like
unable to create a basic OpenGL renderer
CoreImage switching to software rendering mode
(Not the exact messages - writing them from memory as I haven't gotten a screenshot -- the sudden lag is
that bad.)
So it
seems like my sketchy
clientClose() patch is coming back to bite me in the form of OpenGL failures after long term use.
Anybody else experiencing this?
In any case I'm going to bed now but I'll check in with this tomorrow. Fellow nVidia Tesla guys, our work might not be quite done yet...
Thanks for the flash info, honestly I still use mainly High Sierra, have used Mojave just few hours per day, and I would say that I noticed a similar slowing (not insanely slow) when I keep many Safari panels opened especially the youtube ones (sometimes have to force closing in activity monitor).
But I recall I am still on
Mojave beta 2.
So I would think that previous patching schemes are slight better stable than
Mojave beta 3.
I wouldn't focus too much on
Console monitoring, I often even on supported High Sierra see many many errors messages while the system in better or worse is working very good.
Regard
clientClose() function,
maybe you could try to cut less binary code from your GeforceTesla unix exec, maybe is a
trunkated function that you left hanging, even if this time I guess could be also to
Metal API missing related.
Using
OpenGL.framework from HS doesn't work with your
GeforceTesla unix patched on my Mojave beta 2, but maybe on beta 3, who knows.
Anyway, I am writing from Safari's
Mojave beta 2 (with
IOAccelerator from
beta 1) on
MB7,1 since a couple of hours and still working fine.
edit:
Another advice for everyone: when I had a good working beta system on an unsupported Mac, I made almost ever a full compressed dmg backup with read/write permissions of my disk, possibly deleting first
/var/vm/sleepimage
edit2:
Ok, I have opened
Console and monitoring
Mojave beta 2, read these messages (they occur not very often):
Unable to create basic Accelerated OpenGL renderer.
Core Image is now using the software OpenGL renderer. This will be slow.
but I repeat the system is very usable (not for high-end user), but a bit slower than High Sierra of course.
I am using
IOAccelerator beta 1 that I posted some pages ago.
And I did installed Mojave beta 1 then upgraded to beta 2 from a supported mac, and now booting Mojave beta 2 from an external USB 2.0 SSD.
edit3:
After 3 hours, when I open together some apps there is a
delay/freeze of about
5-10 seconds, even when
close/minimize/maximize a window with the
red/orange/green dots, but I would say after that delay/freeze in rendering the animation, graphically the opened process is stable and usable. There is no need to force closing the processes (except Safari if you opened many panels as I do often) just waiting that delay.
So I confirm system became slower after some hours, but
not insanely slower on
Mojave beta 2 with IOAccelerator beta 1 (sorry I know I have repeated thousands time it's annoying).
I will try to binary edit the GeForceTesla unix exec, hoping to understand ASAP what the
clientClose() function does and possibly leave that function where is and inspecting and deleting some lines inside.
edit4:
Ok I'm in, successful decompiled GFT unix binary taken clean from HS, but do you have removed all the assembler code related to function
IONVGLContextTesla::clientClose() ?
OK, I've seen your file, you NOP'd every memory addresses except the last one, but how did you modified the code inside pseudo function in
return rax ?
I mean I can't modify inside the code, only NOP.
Maybe if we compare the memory addresses
push, call, mov, pop, add and so on with the Kernel panic log could keep almost all memory addresses.
They are not so much I counted
21 in columns.
I saw also that the
7th memory address
je points to the
16th address
xor where is referral to
; CODE XREF=__ZN18IONVGLContextTesla11clientCloseEv+16
that is the exactly binary name translation of
IONVGLContextTesla::clientClose() string.
I'll wait for your opinion, thanks.
Meanwhile I try to custom break some lines.
edit5:
Tried nop first six lines, and still land QE/CI to desktop, but after LoginUI got the known KP, in the KP log this time I get no kexts in backtrace but only an invalid memory address pointer.
After 2nd tried nop from the 7th to 16th, same results, same KP log.
3rd tried nop from 17th to 21st, same results but this time got the already known KP Log with the Tesla kext in backtrace, so I guess in this memory address range there isn't the KP guilty or is there!?, I am confused.
I know why I am NOP zones without criteria, but really can't nop completely a zone, I mean it remains ever a DWORD memory address residual.
My aim is to avoid NOP completely
IONVGLContextTesla::clientClose() memory addresses.
Then this is mostly experimental, based on ASentientBot file, I don't know exactly I have followed the last memory address he left and this brought me to a IOGPURestartReportTesla function, then I NOP'd that memory address and recompiled binary. It seems that no more delay/freeze. I could get wrong, but maybe to those experienced, give it a try. You should chown/chmod the file and rebuild kextcache.
No, I've double checked the file, the NOP'd address is still there, so same issue delay/freeze after couple of hours, it is similar to the one posted by ASentientBot.
I think we must start again from GeForceTesla unix binary untouched from HS, I removed it.
I attach the entire untouched extracted assembly code and his relative function responsible of Mojave QE/CI KP on Legacy Nvidia Tesla.
Ok this post is becoming tedious, I will use a new one if had any news.