Checked with an older version OS/2 MCP (Media Convenience Pack) which have his own environment, so eCS paths, sets, files, libraries, dlls ... are excluded

Same failures as in eCS 1.2MR

Using hbrun_mt.exe from eCS in OS/2 MCP
--------------------
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe speedtst.prg --thread=2

11/12/08 06:14:11 OS/2 4.50
Harbour 1.1.0dev (Rev. 9903) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.29
====================================================================SYS1808:
El proceso se ha detenido. El código de diagnóstico de software (código de excepción) es 0005.
--------------------

Using hbrun_mtmcp.exe from a ***clean Harbour build in OS/2 MCP***:
--------------------
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mtmcp.exe speedtst.prg --thread=2

11/12/08 06:38:07 OS/2 4.50
Harbour 1.1.0dev (Rev. 9903) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.29
====================================================================SYS1808:
El proceso se ha detenido. El código de diagnóstico de software (código de excepción) es 0005.
-------------------

Maurilio, I sent to you owexefiles.exe with:
- hbrun_st.exe eCS
- hbrun_mt.exe eCS
- speedtst.exe eCS
- hbrun_stmcp.exe OS/2 MCP
- hbrun_mtmcp.exe OS/2 MCP

Test hbrun* speedtst.prg --thread=2

David Macias


I think the problem is not in the code but in the flags used to build
harbour, I've changed owatcom.cf this way

#CPPFLAGS = -j -w3 -d2 -5s -5r -fp5 -oxehtz -zq -zt0 -mf -bt=NT
#DAVID: CPPFLAGS = -w2 -d1 -zq -bt=OS2
CPPFLAGS = -w2 -d1 -zq -bt=OS2 -bm

#architecture flags
#CPPFLAGS += -5 -fp5

# optimization flags
# don't enable -ol optimization in OpenWatcom 1.1 - gives buggy code
#CPPFLAGS += -onaehtzr -oi+ -ei -zp8 -s -zt0

I've removed nearly all compilation flags, I don't know what they mean,
but anyway, I've always thought that if you need too many compiler flags
to build, mething is wrong :)

And I've also changed ld flags this way:

LD = wlink
#DAVID: LDFLAGS = debug all OP osn=OS2 OP stack=65536 OP CASEEXACT
#LDFLAGS = debug all OP stack=65536 OP CASEEXACT
#LDFLAGS = debug all

I mean I've removed them all, BTW, having a stack of only 64K is a
good >way to have troubles. I'm nearly sure GCC expands the stack on
demand >and starts with  a 1Mb of stack space.

With these changes all mttest?? programs build and run but
mttest10.prg >which I think tries to open more than one console, which I
don't think >is feasible on OS/2.

speedtst runs with --thread=2 as well and here is its output.

Maurilio:

I replicated your owatcom.cf and made a fresh build
As a note it delay 1/3 time of previous build with old owatcom.cf

But here problem remain
------------------
a) ST work fine
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_st.exe speedtst.prg

b) MT work fine
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe speedtst.prg

c) MT fail
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe
speedtst.prg --scale


d) MT fail (perhaps your test)
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe
speedtst.prg --thread=2

Your results:
---------
11/12/08 11:16:32 OS/2 4.50
Harbour 1.1.0dev (Rev. 9893) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.45
====================================================================
[ T001: x := L_C ]..............................................9.68
[...]
--------

and my results with hbrun_mt.exe:
--------
[E:\harbour811\harbour\tests]e:\harbour811\ow\bin\hbrun_mt.exe
speedtst.prg --thread=2

11/12/08 05:42:53 OS/2 4.50
Harbour 1.1.0dev (Rev. 9903) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.29
====================================================================SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.
--------

and my results with compiled .prg:
--------
[E:\harbour811\harbour\tests]e:\harbour811\harbour\bin\pbaos2.cmd -mt
speedtst
Open Watcom Linker Version 1.7
Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.
Source code is available under the Sybase Open Watcom Public License.
See http://www.openwatcom.org/ for details.
loading object files
searching libraries
creating an OS/2 32-bit executable
[E:\harbour811\harbour\tests]speedtst.exe --thread=2

11/12/08 05:51:15 OS/2 4.50
Harbour 1.1.0dev (Rev. 9903) (MT)+ Open Watcom C++ 12.70.8 (32-bit)
THREADS: 2
N_LOOPS: 1000000
[ T000: empty loop overhead ]...................................0.32
====================================================================SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.
-------

What is code 0005 ?

------------------

As I see your Harbour rev is older, and empty loop overhead is greater

hbrun_st.exe was made with hbvm.lib (harbour\utils\hbrun\makefile)
hbrun_mt.exe was made with hbvmmt.lib (harbour\utils\hbrun\makefile)

and tests\mt\mttest*.prg fails as before
Example for mttest01.prg in ST and MT:
-----------------
[E:\harbour811\harbour\tests\mt]e:\harbour811\ow\bin\hbrun_st.exe
mttest01.prg

Harbour 1.1.0dev (Rev. 9903)
Error BASE/3012  Argument error: HB_THREADJOIN
Called from HB_THREADJOIN(0)
Called from MAIN(25)
Called from HB_HRBRUN(0)
Called from _APPMAIN(0)
[E:\harbour811\harbour\tests\mt]e:\harbour811\ow\bin\hbrun_mt.exe
mttest01.prg

Harbour 1.1.0dev (Rev. 9903)SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0005.
-----------------

Note: For these tests I am using hbrun_st.exe, hbrun_mt.exe and NOT
compiled .prg files
- Using hbrun_mt.exe and compiled .prg gave same results in all previous
tests
- owatcom.cf and bin\pbaos2.cmd for compiled .prg differ in big
extension  in flags/switchs for OW. This is a pending subject to discuss


All this research about OW / MT raised since my message:

---------------------
Tests with current Harbour - OS/2 - With OpenWatcom 1.7 (Rev. 9846):

[E:\harbour810\harbour\tests]e:\harbour810\harbourow\bin\hbrun_mt.exe
speedtst.prg --scale

Using --scale cause this error:

--------------
11/06/08 05:08:24 OS/2 4.50
Harbour 1.1.0dev (Rev. 9846) (MT) Open Watcom C++ 12.70.8 (32-bit)
THREADS: 1
N_LOOPS: 1000000
                                                         1 th.  1 th.
factor
============================================================================
SYS1808:
The process has stopped.  The software diagnostic
code (exception code) is  0001.
--------------

Tracing it happen trying to execute
          hb_threadStart( "thTestScale", mtxJobs, mtxResults )
in section:
--------
    if lScale
       mtxJobs := hb_mutexCreate()
       mtxResults := hb_mutexCreate()
       nTimeTotST := nTimeTotMT := 0
       for i:=1 to nMT
          hb_threadStart( "thTestScale", mtxJobs, mtxResults )
       next
--------

but never enter to hb_threadStart( )
Perhaps error is for values in parameters ?

---------------------

and Przemek answer
---------------------
Tests with current Harbour - OS/2 - With OpenWatcom 1.7 (Rev. 9846):
[E:\harbour810\harbour\tests]e:\harbour810\harbourow\bin\hbrun_mt.exe
speedtst.prg --scale

Please try mttest*.prg 1st. It will be easier to locate basic problems.
---------------------

so I started mttest*.prg tests and further .c, .prg files

Rest is history   :-)


As I see, as at beginning of Harbour MT feature tests months ago, we get
different result due OS/2 versions
- Your OS/2 SMP
- My eCS 1.2MR

We need a third player to decide  :-)



David Macias



_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to