Re: Crash on Linux+Clang (NSTimer)

Riccardo Mottola <[email protected]>
Newsgroups gmane.comp.lib.gnustep.devel
Message-ID <[email protected]>
David Chisnall wrote:
> This one is slightly more complicated because we're passing the 
> address of `self` in the argument frame into slowMsgLookup, so our 
> stack looks something like this:
>
> { other args }
> _cmd
> self
> return address from objc_msgSend
> _cmd
> &self (the stored version a little way up the stack)
>
> To fix this, we need to add 4 bytes of padding before the second copy 
> of _cmd.
>
> I think the simplest way to do that is duplicate the push %ecx. We 
> then also need to fix the CFI directive and the add that does the 
> stack restore to compensate for the extra 4 bytes:
>
>
> ```
>     mov   \sel(%esp), %ecx
>     lea   \receiver(%esp), %eax
>
>     push  %ecx                           # Unused, stack alignment
>     push  %ecx                           # _cmd
>     push  %eax                           # &self
>     .cfi_def_cfa_offset 16
>     call  CDECL(slowMsgLookup)@PLT
>     add   $12, %esp                      # restore the stack
> ```
>
> Does that fix it for you?  If so, please can you raise a PR with that 
> change in it? 

It improves things definitely. Now gui apps start again.
Here the test-suite results:

76% tests passed, 44 tests failed out of 186

That's exactly the same number as before and the tests still fail, even 
if in "real world" things improved? That's mysterious.

I tried starting Ink and more complex GWorkspace, Gorm, GNUMail, they 
all come up, load bundles, etc. So I think it is better than before and 
branched.

         Start 125: objc_msgSend
125/186 Test #125: objc_msgSend 
......................................Child aborted***Exception: 0.00 sec
         Start 126: objc_msgSend_optimised
126/186 Test #126: objc_msgSend_optimised 
............................Child aborted***Exception:   0.00 sec
         Start 127: objc_msgSend_legacy
127/186 Test #127: objc_msgSend_legacy 
...............................Child aborted***Exception:   0.00 sec
         Start 128: objc_msgSend_legacy_optimised
128/186 Test #128: objc_msgSend_legacy_optimised 
.....................Child aborted***Exception:   0.00 sec


How can I give you more details on these (and the other) failures? there 
are quite a lot.

I don't know what differs from your setup, mine should be pretty 
"standard" in my intentions.

ccmake . shows I am using clang:

  CMAKE_CXX_COMPILER               /usr/lib/llvm/10/bin/clang++

and gnustep make:
./configure --prefix=/ --with-layout=gnustep 
--with-library-combo=ng-gnu-gnu


Thanks,
Riccardo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.