|
From: | David Chisnall |
Subject: | Re: loading bundles stopped working |
Date: | Mon, 26 Nov 2018 15:14:36 +0000 |
User-agent: | Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.3.1 |
On 26/11/2018 15:03, Sebastian Reitenbach wrote:
From the stacktrace, It's the last NSCAssert1 that fires, right after that line: backend = NSClassFromString (@"GSBackend");
Yup. That makes me think either: - The dlopen failed.- The dlopen returned success, but didn't call the constructor, so it didn't call __objc_exec_class.
- The library was loaded but some memory was corrupted.
So before that, there's the other NSCAssert1, [theBundle load], and since this doesn't fire, I think loading it, went OK? But I might well be on the wrong track.
Can you disable the breakpoint on __objc_exec_class until just before the [theBundle load] line, then enable it and make sure that it's called *after* the dlopen call? Can you also check in the code that we're actually checking the return from dlopen correctly (I'm pretty sure we are).
If all this works, can you check in each __objc_exec_class call and see if one of the classes that it loads is called GSBackend? If so, then it looks as if there's still something wrong with the hash table in libobjc2. I think I back-ported all of the fixes to the 1.9 branch, but I might have missed one...
David
[Prev in Thread] | Current Thread | [Next in Thread] |