Comment 1 for bug 740815

Revision history for this message
Chris Coulson (chrisccoulson) wrote :

Note, I'm struggling with swt-gtk at the moment. I've got it built, but everything using webkit crashes inside soup_session_get_feature. I've islolated it down to a pointer returned from webkit_get_default_session losing its upper 32-bits somewhere (I'm testing this on a 64-bit machine).

This is happening here inside libswt-webkit-gtk.so:

0000000000006791 <Java_org_eclipse_swt_internal_webkit_WebKitGTK__1webkit_1get_1default_1session>:
    6791: 55 push %rbp
    6792: 48 89 e5 mov %rsp,%rbp
    6795: 48 83 ec 20 sub $0x20,%rsp
    6799: 48 89 7d e8 mov %rdi,-0x18(%rbp)
    679d: 48 89 75 e0 mov %rsi,-0x20(%rbp)
    67a1: 48 c7 45 f8 00 00 00 movq $0x0,-0x8(%rbp)
    67a8: 00
    67a9: b8 00 00 00 00 mov $0x0,%eax
    67ae: e8 ed e3 ff ff callq 4ba0 <webkit_get_default_session@plt>
    67b3: 48 98 cltq
    67b5: 48 89 45 f8 mov %rax,-0x8(%rbp)
    67b9: 48 8b 45 f8 mov -0x8(%rbp),%rax
    67bd: c9 leaveq
    67be: c3 retq

Note that there is a cltq instruction after returning from webkit_get_default_session which sign expands %eax -> %rax, and seems wrong to me. I can't work out why it ends up there (it doesn't get added to the return of any other function, and I can't spot anything obvously different at the source level). I've confirmed that if I hack the binary and replace the cltq with 2 nop's, then the problem goes away and everything using webkit works properly.

Matthias - any ideas about this?