>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