public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libffi/52221] New: [libffi] r184021 needs to be fixed.
@ 2012-02-12 17:22 jojelino at gmail dot com
  2012-02-12 17:58 ` [Bug libffi/52221] " ktietz at gcc dot gnu.org
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: jojelino at gmail dot com @ 2012-02-12 17:22 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52221

             Bug #: 52221
           Summary: [libffi] r184021 needs to be fixed.
    Classification: Unclassified
           Product: gcc
           Version: 4.7.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libffi
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: jojelino@gmail.com
              Host: i686-pc-cygwin
            Target: i686-pc-mingw32
             Build: i686-pc-cygwin


tried libjava with r184135, but got SIGSEGV because of following.

in libffi/src/x86/ffi.c,
#define FFI_INIT_TRAMPOLINE_THISCALL(TRAMP,FUN,CTX,SIZE) \
{ unsigned char *__tramp = (unsigned char*)(TRAMP); \
   unsigned int  __fun = (unsigned int)(FUN); \
   unsigned int  __ctx = (unsigned int)(CTX); \
   unsigned int  __dis = __fun - (__ctx + 22);  \
                                         ^^^^
                                          49

and fixing above didn't succeed ExtraClassLoader testcase


Starting program: /tmp/gcc/i686-pc-mingw32/libjava/testsuite/ExtraClassLoader
[New Thread 412.0xa24]
[New Thread 412.0x1398]

Program received signal SIGSEGV, Segmentation fault.
0x696c8140 in java::lang::Class* java::lang::Object::getClass() ()
   from /cygdrive/d/cygwin/tmp/gcc/i686-pc-mingw32/libjava/.libs/libgcj-13.dll
(gdb) i r
eax            0xe      0xe
ecx            0x8df4458b       0x8df4458b
edx            0x22f9c4 0x22f9c4
ebx            0x1      0x1
esp            0x22f9c4 0x22f9c4
ebp            0x22f9c8 0x22f9c8
esi            0xc01b24 0xc01b24
edi            0xc01b3c 0xc01b3c
eip            0x696c8140       0x696c8140 <java::lang::Class*
java::lang::Object::getClass()>
eflags         0x10202  [ IF RF ]
cs             0x1b     0x1b
ss             0x23     0x23
ds             0x23     0x23
es             0x23     0x23
fs             0x3b     0x3b
gs             0x0      0x0
(gdb) set height 1000
(gdb) bt
#0  0x696c8140 in java::lang::Class* java::lang::Object::getClass() ()
   from /cygdrive/d/cygwin/tmp/gcc/i686-pc-mingw32/libjava/.libs/libgcj-13.dll
#1  0x69ce1735 in ffi_call_win32 () at ../.././libffi/src/x86/win32.S:464
#2  0x69ce1608 in ffi_raw_call (cif=0xc01b24,
    fn=0x696c8140 <java::lang::Class* java::lang::Object::getClass()>,
    rvalue=0x22fbe8, fake_avalue=0x22fa54) at ../.././libffi/src/x86/ffi.c:832
#3  0x6969bd0e in _Jv_InterpMethod::run (retp=0x22fd50, args=0x22fd70,
    meth=0xac9e10) at ../.././libjava/interpret-run.cc:611
#4  0x69ce1905 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:749
#5  0x00fa0039 in ?? ()
#6  0x004087bf in ExtraClassLoader.main(java.lang.String[])void ()
    at ExtraClassLoader.java:9
#7  0x696bd642 in gnu::java::lang::MainThread::call_main (this=0xc0ef60)
    at ../.././libjava/gnu/java/lang/natMainThread.cc:54
#8  0x696fa4d6 in gnu.java.lang.MainThread.run()void (this=@c0ef60)
    at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106
#9  0x696cc062 in _Jv_ThreadRun (thread=0xc0ef60)
    at ../.././libjava/java/lang/natThread.cc:335
#10 0x69683f5d in _Jv_RunMain (vm_args=0x0, klass=klass@entry=0x40a160,
    name=name@entry=0x0, argc=argc@entry=0x1, argv=argv@entry=0x3d8958,
    is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1795
#11 0x69684156 in _Jv_RunMain (klass=klass@entry=0x40a160,
    name=name@entry=0x0, argc=argc@entry=0x1, argv=argv@entry=0x3d8958,
    is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1820
#12 0x696841bf in JvRunMain (klass=0x40a160, argc=0x1, argv=0x3d8958)
    at ../.././libjava/prims.cc:1826
#13 0x00401402 in _fu0___Jv_Compiler_Properties () at /tmp/cckDh2w0.i:11
#14 0x004010fd in __mingw_CRTStartup () at ../../.././winsup/mingw/crt1.c:244
#15 0x00000408 in ?? ()
#16 0x7ffd7000 in ?? ()
#17 0x00000000 in ?? ()
Warning: the current language does not match this frame.
(gdb)

it seems that thiscall trampoline works correctly.


0x00fa0022 in ?? ()
4: $ebx = 0x696c5603
3: $ecx = 0x696c5603
2: $eax = 0xfa0008
1: x/i $eip
=> 0xfa0022:    call   0x69ce18be <ffi_closure_SYSV+190>
(gdb)
0x69ce18be in ffi_closure_SYSV () at ../.././libffi/src/x86/win32.S:715
715             ret
4: $ebx = 0x696c5603
3: $ecx = 0x696c5603
2: $eax = 0xfa0008
1: x/i $eip
=> 0x69ce18be <ffi_closure_SYSV+190>:
    jbe    0x69ce18c0 <ffi_closure_raw_SYSV>
(gdb) si
ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:734
734             pushl   %ebp
4: $ebx = 0x696c5603
3: $ecx = 0x696c5603
2: $eax = 0xfa0008
1: x/i $eip
=> 0x69ce18c0 <ffi_closure_raw_SYSV>:   push   %ebp
(gdb) b ffi_call_win32
Breakpoint 4 at 0x69ce16e3: file ../.././libffi/src/x86/win32.S, line 433.
(gdb) c
Continuing.

Breakpoint 4, ffi_call_win32 () at ../.././libffi/src/x86/win32.S:433
433             movl  20(%ebp),%ecx                                             
4: $ebx = 0x1
3: $ecx = 0xe
2: $eax = 0x22fa0c
1: x/i $eip
=> 0x69ce16e3 <ffi_call_win32+3>:       mov    0x14(%ebp),%ecx
(gdb) bt
#0  ffi_call_win32 () at ../.././libffi/src/x86/win32.S:433
#1  0x69ce15e8 in ffi_raw_call (cif=0xc01bec, fn=
    0x696d4940 <java.lang.Object.Object()>, rvalue=0x22fbf0,
    fake_avalue=0x22fa58) at ../.././libffi/src/x86/ffi.c:827
#2  0x6969bd0e in _Jv_InterpMethod::run (retp=0x22fd58, args=0x22fd78,
    meth=0xac9e10) at ../.././libjava/interpret-run.cc:611
#3  0x69ce18e5 in ffi_closure_raw_SYSV () at ../.././libffi/src/x86/win32.S:749
#4  0x00fa0027 in ?? ()
#5  0x004087bf in ExtraClassLoader.main(java.lang.String[])void ()
    at ExtraClassLoader.java:9
#6  0x696bd642 in gnu::java::lang::MainThread::call_main (this=0xc0ef60)
    at ../.././libjava/gnu/java/lang/natMainThread.cc:54
#7  0x696fa4d6 in gnu.java.lang.MainThread.run()void (this=@c0ef60)
    at /tmp/gcc/libjava/gnu/java/lang/MainThread.java:106
#8  0x696cc062 in _Jv_ThreadRun (thread=0xc0ef60)
    at ../.././libjava/java/lang/natThread.cc:335
#9  0x69683f5d in _Jv_RunMain (vm_args=0x0, klass=klass@entry=0x40a160,
    name=name@entry=0x0, argc=argc@entry=0x1, argv=argv@entry=0x3d8958,
    is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1795
#10 0x69684156 in _Jv_RunMain (klass=klass@entry=0x40a160,
    name=name@entry=0x0, argc=argc@entry=0x1, argv=argv@entry=0x3d8958,
    is_jar=is_jar@entry=0x0) at ../.././libjava/prims.cc:1820
#11 0x696841bf in JvRunMain (klass=0x40a160, argc=0x1, argv=0x3d8958)
    at ../.././libjava/prims.cc:1826
#12 0x00401402 in _fu0___Jv_Compiler_Properties () at /tmp/cckDh2w0.i:11
#13 0x004010fd in __mingw_CRTStartup () at ../../.././winsup/mingw/crt1.c:244
#14 0x00000408 in ?? ()
#15 0x7ffdd000 in ?? ()
#16 0x00000000 in ?? ()
(gdb) ni

ffi_prep_args (stack=0x22f9cc "\032", ecif=0x22fa0c)
    at ../.././libffi/src/x86/ffi.c:46
warning: Source file is more recent than executable.
46      {
4: $ebx = 0x1
3: $ecx = 0x4
2: $eax = 0x22f9cc
1: x/i $eip
=> 0x69ce0eb0 <ffi_prep_args>:  push   %ebp
(gdb) finish
Run till exit from #0  ffi_prep_args (stack=0x22f9cc "\032", ecif=0x22fa0c)
    at ../.././libffi/src/x86/ffi.c:46
ffi_call_win32 () at ../.././libffi/src/x86/win32.S:444
444             addl  $8,%esp
4: $ebx = 0x1
3: $ecx = 0x1
2: $eax = 0xe
1: x/i $eip
=> 0x69ce16f1 <ffi_call_win32+17>:      add    $0x8,%esp
(gdb) ni
447             cmpl $3, 16(%ebp)  # FFI_THISCALL
4: $ebx = 0x1
3: $ecx = 0x1
2: $eax = 0xe
1: x/i $eip
=> 0x69ce16f4 <ffi_call_win32+20>:      cmpl   $0x3,0x10(%ebp)
(gdb)
448             jz .do_thiscall
4: $ebx = 0x1
3: $ecx = 0x1
2: $eax = 0xe
1: x/i $eip
=> 0x69ce16f8 <ffi_call_win32+24>:      je     0x69ce170c <ffi_call_win32+44>
(gdb)
456             movl (%esp), %ecx
4: $ebx = 0x1
3: $ecx = 0x1
2: $eax = 0xe
1: x/i $eip
=> 0x69ce170c <ffi_call_win32+44>:      mov    (%esp),%ecx
(gdb) x $esp
0x22f9cc:       0x8df4458b

parameter is broken for sure. please check ffi_prep_args


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2012-02-23 21:04 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-12 17:22 [Bug libffi/52221] New: [libffi] r184021 needs to be fixed jojelino at gmail dot com
2012-02-12 17:58 ` [Bug libffi/52221] " ktietz at gcc dot gnu.org
2012-02-13 15:18 ` ktietz at gcc dot gnu.org
2012-02-13 15:19 ` ktietz at gcc dot gnu.org
2012-02-13 17:02 ` jojelino at gmail dot com
2012-02-13 18:35 ` jojelino at gmail dot com
2012-02-13 21:06 ` ktietz at gcc dot gnu.org
2012-02-15 21:43 ` [Bug libffi/52221] [libffi] r183675,r184021 " jojelino at gmail dot com
2012-02-16 20:20 ` jojelino at gmail dot com
2012-02-16 21:01 ` ktietz at gcc dot gnu.org
2012-02-16 21:06 ` jojelino at gmail dot com
2012-02-16 23:35 ` jojelino at gmail dot com
2012-02-17  8:39 ` jojelino at gmail dot com
2012-02-17  9:07 ` ktietz at gcc dot gnu.org
2012-02-22 18:23 ` jojelino at gmail dot com
2012-02-23 21:04 ` ktietz at gcc dot gnu.org
2012-02-23 21:28 ` ktietz at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).