I'm having with some issues with XAllocID from libX11 1.1.5. In
certain cases it returns 0, which seems very odd when I look at the
source in XlibInt.c. Then I objdump libX11.so and I get this, which
looks like a completely different function to me:

00041970 <_XAllocID>:
   41970:       55                      push   %ebp
   41971:       89 e5                   mov    %esp,%ebp
   41973:       8b 55 08                mov    0x8(%ebp),%edx
   41976:       53                      push   %ebx
   41977:       e8 2b 1d fd ff          call   136a7 <gete...@plt+0xcf>
   4197c:       81 c3 78 a6 0a 00       add    $0xaa678,%ebx
   41982:       8b 82 38 05 00 00       mov    0x538(%edx),%eax
   41988:       8b 48 38                mov    0x38(%eax),%ecx
   4198b:       c7 40 38 00 00 00 00    movl   $0x0,0x38(%eax)
   41992:       f6 82 94 00 00 00 08    testb  $0x8,0x94(%edx)
   41999:       75 10                   jne    419ab <_XAllocID+0x3b>
   4199b:       8b 42 7c                mov    0x7c(%edx),%eax
   4199e:       83 8a 94 00 00 00 08    orl    $0x8,0x94(%edx)
   419a5:       89 82 24 05 00 00       mov    %eax,0x524(%edx)
   419ab:       8d 83 4c 67 f5 ff       lea    -0xa98b4(%ebx),%eax
   419b1:       89 42 7c                mov    %eax,0x7c(%edx)
   419b4:       89 c8                   mov    %ecx,%eax
   419b6:       5b                      pop    %ebx
   419b7:       5d                      pop    %ebp
   419b8:       c3                      ret

Basically I call XAllocID in two functions in a shared lib that's
eventually dlopened; one instance returns !0, the other returns 0, and
I can't figure out why. I'm not calling XAllocID excessively or
anything at all, just twice in a simple test and I can confirm that in
both calls the above code gets executed, so I'm not jumping to
something else. If anyone knows what's going on I'd appreciate it.
_______________________________________________
xorg-devel mailing list
xorg-devel@lists.x.org
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to