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