In fact, I had a little closer look at the issue and the problem is
in function gs_objc_msg_forward in GSFFIInvocation.m. This function
is invoked from the Objective-C runtime when a method selector is not
implemented by the receiver of a method call. If the compiler cannot
determine the signature of the called method, which happens if the
receiver's class does not declare the method, gs_objc_msg_forward uses
the fixed signature of a method with no arguments and an id result.
The
signature is then used to copy the method arguments into a malloc'ed
buffer. Obviously, no arguments are copied at all in this case and
hence the target of the forwarded method call will be called with
undefined arguments. I do not see how this could ever be fixed, so I'm
inclined to think that GNUstep should drop libffi.