Issue 36236 - linux sparc bridges
Summary: linux sparc bridges
Status: CLOSED DUPLICATE of issue 37423
Alias: None
Product: porting
Classification: Code
Component: code (show other issues)
Version: 680m58
Hardware: Sun Linux, all
: P3 Trivial (vote)
Target Milestone: OOo 2.0
Assignee: sparcmoz
QA Contact: issues@porting
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-10-28 02:35 UTC by sparcmoz
Modified: 2004-12-10 04:25 UTC (History)
4 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments

Note You need to log in before you can comment on or make changes to this issue.
Description sparcmoz 2004-10-28 02:35:22 UTC
python upgrade to 2 requires this test:
BUILD
- build m56
- clean solver from any old python stuff (especially ...\lib\python and 
..\inc\python and ...\inc\pyversion.mk !!!), otherwise you may get 
strange results
- build the python module. The python build process should create a 
shared library on every platform. Please ensure, that the variables 
PY_FULL_DLL_NAME in the pyversion.mk is correct for your platform and 
PYTHONLIB contains the correct linkage statement. This is later used in 
scp2 and pyuno module. For linux x86, the name is libpython2.3.so.1.0.
deliver python module (make sure, that your shared lib name is contained 
in the d.lst also).
- build and deliver pyuno
- build testtools for your platform
   ( note: on win32-tcsh, you need to setenv SOLAR_JAVA "", but that is
           not relavant for this test).
- switch to testtools/source/bridetest/pyuno and type 'dmake runtest'
- switch to scp2 and rebuild + deliver it.
============================================

Using SRC680_m58 I get to here 
switch to testtools/source/bridetest/pyuno and type 'dmake runtest'

there is a known problem with the bridges code for linux sparc (it builds but
does not pass tests)

Backtrace:
(gdb) run
Starting program: /home/jim/680/solver/680/unxlngs.pro/bin/python main.py
-env:UNO_TYPES=pyuno_regcomp.rdb -env:UNO_SERVICES=pyuno_regcomp.rdb[Thread
debugging using libthread_db enabled]
[New Thread 16384 (LWP 21122)]
> sizeof(AlignSize_Impl) = 16
> sizeof(M) = 8
> sizeof(N) = 12
> sizeof(N2) = 12
> sizeof(O) = 24
> sizeof(D) = 8
> sizeof(C1) = 2
> sizeof(C2) = 8
> sizeof(C3) = 24
> sizeof(C4) = 40
> sizeof(C5) = 56
> sizeof(C6) = 72
> sizeof(O2) = 32
> sizeof(Char3) = 3
> sizeof(P) = 24
> sizeof(second) = 4
Thread:      1 :> inserting new mapping: ;uno[8b250];gcc3[8bd08]
Thread:      1 :> inserting new mapping: ;gcc3[8bd08];uno[8b250]

Program received signal SIGILL, Illegal instruction.
[Switching to Thread 16384 (LWP 21122)]
0x70de526c in callVirtualMethod (pAdjustedThisPtr=0x70e96fcc,
    nVtableIndex=4, pRegisterReturn=0xefffdaa8,
    eReturnType=typelib_TypeClass_VOID, pStackLongs=0xefffd8d0,
    nStackLongs=6)
    at /home/jim/680/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx:103
103             __asm__ (
Current language:  auto; currently c++
(gdb) bt
#0  0x70de526c in callVirtualMethod (pAdjustedThisPtr=0x70e96fcc,
    nVtableIndex=4, pRegisterReturn=0xefffdaa8,
    eReturnType=typelib_TypeClass_VOID, pStackLongs=0xefffd8d0,
    nStackLongs=6)
    at /home/jim/680/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx:103
#1  0x70de5c74 in cpp_call (pThis=0xb81c8, aVtableSlot=
      {offset = 0, index = 4}, pReturnTypeRef=0x2d810, nParams=3,
    pParams=0xb5b70, pUnoReturn=0xefffdaa8, pUnoArgs=0xefffda90,
    ppUnoExc=0xefffdab0)
    at /home/jim/680/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx:425
#2  0x70de65c8 in bridges::cpp_uno::shared::UnoInterfaceProxy::dispatch
(pUnoI=0xb81c8, pMemberDescr=0xb7d98, pReturn=0xefffdaa8,
    pArgs=0xefffda90, ppException=0xefffdab0)
    at /home/jim/680/bridges/source/cpp_uno/gcc3_linux_sparc/uno2cpp.cxx:594
#3  0x70d90e3c in component_getFactory ()
   from /home/jim/680/solver/680/unxlngs.pro/lib/reflection.uno.so
#4  0x70d110d8 in component_getDescriptionFunc ()
   from /home/jim/680/solver/680/unxlngs.pro/lib/invocation.uno.so
---Type <return> to continue, or q <return> to quit---
#5  0x705b9f9c in pyuno::PyUNO_callable_call ()
   from /home/jim/680/solver/680/unxlngs.pro/lib/libpyuno.so
#6  0x70059f48 in PyObject_Call (func=0x70503090, arg=0x70518698,
    kw=0x0) at Objects/abstract.c:1755
#7  0x700c4c54 in do_call (func=0x70503090, pp_stack=0xefffde90,
    na=3, nk=1884391064) at Python/ceval.c:3644
#8  0x700c4974 in call_function (pp_stack=0xefffde90, oparg=3)
    at Python/ceval.c:3460
#9  0x700c1e90 in eval_frame (f=0x524f8) at Python/ceval.c:2116
#10 0x700c4b44 in fast_function (func=0x7050c020, pp_stack=0x3, n=4,
    na=139792, nk=337144) at Python/ceval.c:3518
#11 0x700c4994 in call_function (pp_stack=0xefffe018, oparg=4)
    at Python/ceval.c:3458
#12 0x700c1e90 in eval_frame (f=0x558f8) at Python/ceval.c:2116
#13 0x700c2d0c in PyEval_EvalCodeEx (co=0x7050cba0, globals=0x4,
    locals=0x700beae8, args=0x0, argcount=0, kws=0x0, kwcount=0,
    defs=0x0, defcount=0, closure=0xffffffff) at Python/ceval.c:2663
#14 0x700bf2e8 in PyEval_EvalCode (co=0x7050cba0, globals=0x704d89c0,
    locals=0x0) at Python/ceval.c:537
#15 0x700f7464 in run_node (n=0x0, filename=0x704d89c0 "",
    globals=0x704d89c0, locals=0x704d89c0, flags=0x704d89c0)
---Type <return> to continue, or q <return> to quit---
  at Python/pythonrun.c:1267
#16 0x700f68d4 in PyRun_SimpleFileExFlags (fp=0x22050,
    filename=0xefffe6f8 "main.py", closeit=1, flags=0xefffe274)
    at Python/pythonrun.c:862
#17 0x700fed5c in Py_Main (argc=4, argv=0xefffe344)
    at Modules/main.c:415
#18 0x7038cdac in __libc_start_main () from /lib/libc.so.6
#19 0x000105d4 in _start ()
#20 0x000105d4 in _start ()
Previous frame identical to this frame (corrupt stack?)
(gdb)
Comment 1 sparcmoz 2004-10-28 03:29:18 UTC
Confirm correct building of python, pyuno:

pyversion.mk
# when you want to change the python version, you must update the d.ls
# in the python project accordingly !!!
PYMAJOR=2
PYMINOR=3
PYMICRO=4
PYVERSION=$(PYMAJOR).$(PYMINOR).$(PYMICRO)
.IF "$(GUI)" == "UNX"
PY_FULL_DLL_NAME=libpython$(PYMAJOR).$(PYMINOR).so.1.0
PYTHONLIB=-lpython$(PYMAJOR).$(PYMINOR)
.ELSE
PY_FULL_DLL_NAME=python$(PYMAJOR)$(PYMINOR).dll
PYTHONLIB=python$(PYMAJOR)$(PYMINOR).lib
.ENDIF

jim@sun:~/680/solver/680/unxlngs.pro/lib$ ls -la libpy*
lrwxrwxrwx  1 jim jim      19 2004-10-28 12:10 libpython2.3.so ->
libpython2.3.so.1.0
-rwxr-xr-x  1 jim jim 3756570 2004-10-28 11:57 libpython2.3.so.1.0
-rwxr-xr-x  1 jim jim  206032 2004-10-28 12:11 libpyuno.so
jim@sun:~/680/solver/680/unxlngs.pro/lib$


Comment 2 Martin Hollmichel 2004-10-28 10:38:08 UTC
set target.
Comment 3 joergbudi 2004-10-28 21:25:17 UTC
Hi Jim,

is there another issue describing the crash in the cppu tests (or when starting
the bridgetest_inprocess script in the output of testtools) ? If not, please
attach a stack trace to this issue.

Bye,

Joerg
Comment 4 sparcmoz 2004-10-29 00:00:03 UTC
Joerg,

the testcppu results are at issue 30219 issue 28110 issue 24507 and some
attachments to those.

I am sorry the bridges code is a problem because I have just copy and pasted
with no idea what I am doing.

The bridgetest_inprocess reports as follows:
(gdb) run
Starting program: /home/jim/680/solver/680/unxlngs.pro/bin/uno -ro
uno_services.rdb -ro uno_types.rdb -s com.sun.star.test.bridge.BridgeTest --
com.sun.star.test.bridge.CppTestObject
(no debugging symbols found)...[Thread debugging using libthread_db enabled]
[New Thread 16384 (LWP 19160)]
> sizeof(AlignSize_Impl) = 16
> sizeof(M) = 8
> sizeof(N) = 12
> sizeof(N2) = 12
> sizeof(O) = 24
> sizeof(D) = 8
> sizeof(C1) = 2
> sizeof(C2) = 8
> sizeof(C3) = 24
> sizeof(C4) = 40
> sizeof(C5) = 56
> sizeof(C6) = 72
> sizeof(O2) = 32
> sizeof(Char3) = 3
> sizeof(P) = 24
> sizeof(second) = 4

> error: cannot get service instance "com.sun.star.test.bridge.BridgeTest"!
> dying...

Program exited with code 01.
(gdb)

Comment 5 joergbudi 2004-10-29 22:17:02 UTC
Hi,

Jim gave me a chance for a small debug session on his machine. I have the
impression, that the fix fo  #i12721# is missing for linux sparc. testcppu crashes

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 16384 (LWP 24363)]
0x00000000 in ?? ()
(gdb) where
#0  0x00000000 in ?? ()
#1  0x0003941c in checkInvalidInterfaceQuery (xObj=@0xefffdf08) at
/home/jim/680/cppu/test/test_di.cxx:653
#2  0x00039618 in perform_test (xObj=@0xefffdf08, xDummy=@0xefffdf28) at
/home/jim/680/cppu/test/test_di.cxx:676
#3  0x00039b84 in test_CppBridge () at /home/jim/680/cppu/test/test_di.cxx:747
#4  0x0002881c in main (argc=1, argv=0xefffe0b4) at
/home/jim/680/cppu/test/testcppu.cxx:1143


after a complex object (an Any) has been returned.
Unfortunately, I don't have enough assembler knowledge to add the patch for
linux sparc. Anyone else out there, who could propose a patch ?

Bye,

Joerg
Comment 6 sparcmoz 2004-11-18 21:53:29 UTC
cleanup linux sparc bridges issues in issuezilla. also need follow up joergs
comment about #12721


*** This issue has been marked as a duplicate of 37423 ***
Comment 7 sparcmoz 2004-12-10 04:25:40 UTC
fixed in cws_src680_unxlngs01