ObjFW  Hex Artifact Content

Artifact 3b3729a316710420baf0fc9c7b032a94225c91da7209214e62edf86d3c25a212:

Manifest of check-in [3b3729a316] - runtime: Don't use static selectors

Static selectors are initialized by a global constructor that might run
too late: If a class has a +[load] that triggers an +[initialize], this
could result in trying to call +[initialize] with the selector in
class.m still being uninitialized. When this happens, it results in a
weird looking crash in an entirely unrelated method. This is because
when uninitialized, the selector name has not been replaced with a
selector UID yet, meaning the pointer to the selector name is treated as
the selector UID. As the dispatch only considers the low 16 bits of the
selector UID for performance reasons, it will just take the low 16 bits
of the pointer to the selector name as the UID without any complaints.
This can then result in calling a random method on that class which then
crashes. by js on 2019-06-25 20:09:55.


A hex dump of this file is not available. Please download the raw binary file and generate a hex dump yourself.