Hello again!
Sorry for not sending an answer but there where some exercises waiting for me ;-(
Origin doesn't work with CrossOver 5 on my machine, so the problem isn't solved for me. Still using the native dll saving works fine.
And here is the next part of my investigation:
Now the _cipow function call again with the patch:
native: 0009:call msvcrt._cipow() ret=7f82aaf9 0009:ret msvcrt._cipow() retval=40f00020 ret=7f82aaf9 0009:call msvcrt._ftol() ret=7f82a67a 0009:ret msvcrt._ftol() retval=00000001 ret=7f82a67a
builtin: 0009:call msvcrt._cipow() ret=7f82aaf9 trace:msvcrt:_cipow x 10.000000 y 5.000000 trace:msvcrt:_cipow z 100000.000000 0009:ret msvcrt._cipow() retval=00000001 ret=7f82aaf9 0009:call ntdll._ftol() ret=7f82a67a 0009:ret ntdll._ftol() retval=0000000000000001 ret=7f82a67a
I also found a different behaviour of the putc function. In most cases the putc's look like this one:
native: 0009:call msvcrt.putc(00000000,78037ca8) ret=7f822012 0009:call ntdll.rtlentercriticalsection(7d937a18) ret=78001075 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=78001075 0009:call ntdll.rtlleavecriticalsection(7d937a18) ret=780012b1 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=780012b1 0009:ret msvcrt.putc() retval=00000000 ret=7f822012
builtin: 0009:call msvcrt.putc(00000000,7d724018) ret=7f822012 0009:ret msvcrt.putc() retval=00000000 ret=7f822012
But sometimes the builtin one does a writefile:
native: 0009:call msvcrt.putc(0000000a,78037ca8) ret=7f82b869 0009:call ntdll.rtlentercriticalsection(7d937a18) ret=78001075 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=78001075 0009:call ntdll.rtlleavecriticalsection(7d937a18) ret=780012b1 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=780012b1 0009:ret msvcrt.putc() retval=0000000a ret=7f82b869 0009:call ok60.?onbeforeprojectsave@cokaccess@@uaehg@z(<unknown, check return>) ret=7f7f35f2
builtin: 0009:call msvcrt.putc(0000000a,7d724018) ret=7f82b869 0009:call kernel32.writefile(00000018,7fe636f0,0000000e,7fadeec0,00000000) ret=7e876a07 0009:call ntdll.ntwritefile(00000018,00000000,00000000,00000000,7fadedc8,7fe636f0,0000000e,00000000,00000000) ret=7fcc4389 0009:ret ntdll.ntwritefile() retval=00000000 ret=7fcc4389 0009:ret kernel32.writefile() retval=00000001 ret=7e876a07 0009:ret msvcrt.putc() retval=0000000a ret=7f82b869 0009:call ok60.?onbeforeprojectsave@cokaccess@@uaehg@z(<unknown, check return>) ret=7f7f35f2
The ftell-function also calls rtlentercriticalsection:
native: 0009:call msvcrt.ftell(78037ca8) ret=7f81f030 0009:call ntdll.rtlentercriticalsection(7d937a18) ret=78001075 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=78001075 0009:call ntdll.rtlentercriticalsection(7d920188) ret=780124b6 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=780124b6 0009:call kernel32.setfilepointer(00000018,00000000,00000000,00000001) ret=78012115 0009:call ntdll.wine_server_handle_to_fd(00000018,00000000,7fadee1c,00000000) ret=7fcc36f1
builtin: 0009:call msvcrt.ftell(7d724018) ret=7f81f030 trace:msvcrt:_lseeki64 :fd (3) handle (0x18) trace:msvcrt:_lseeki64 :fd (3) to 300000018 pos seek_cur 0009:call kernel32.setfilepointerex(00000018,00000000,00000000,7fadee80,00000001) ret=7e8766dc 0009:call ntdll.wine_server_handle_to_fd(00000018,00000000,7fadeda4,00000000) ret=7fcc36f1
Then there is a bit stange part. It happens during a lot of putc calls...
native: (line 32599) 0009:call msvcrt.putc(00000000,78037ca8) ret=7f822012 0009:call ntdll.rtlentercriticalsection(7d937a18) ret=78001075 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=78001075 0009:call ntdll.rtlleavecriticalsection(7d937a18) ret=780012b1 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=780012b1 0009:ret msvcrt.putc() retval=00000000 ret=7f822012 0009:call msvcrt.putc(fffffffb0009:call ntdll.rtlentercriticalsection(7e699888) ret=7e6553d2 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=7e6553d2 0009:call ntdll.rtlleavecriticalsection(7e699888) ret=7e655412 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=7e655412 ,78037ca8) ret=7f822012 0009:call ntdll.rtlentercriticalsection(7d937a18) ret=78001075 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=78001075 0009:call ntdll.rtlleavecriticalsection(7d937a18) ret=780012b1 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=780012b1 0009:ret msvcrt.putc() retval=000000fb ret=7f822012 0009:call msvcrt.putc(ffffffff0009:call ntdll.rtlentercriticalsection(7e699888) ret=7e6553d2 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=7e6553d2 0009:call ntdll.rtlleavecriticalsection(7e699888) ret=7e655412 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=7e655412 ,78037ca8) ret=7f822012 0009:call ntdll.rtlentercriticalsection(7d937a18) ret=78001075 0009:ret ntdll.rtlentercriticalsection() retval=00000000 ret=78001075 0009:call ntdll.rtlleavecriticalsection(7d937a18) ret=780012b1 0009:ret ntdll.rtlleavecriticalsection() retval=00000000 ret=780012b1 0009:ret msvcrt.putc() retval=000000ff ret=7f822012 0009:call msvcrt.putc(00000019,78037ca8) ret=7f822012 ...
builtin: (line 32376) 0009:call msvcrt.putc(00000000,7d724018) ret=7f822012 0009:ret msvcrt.putc() retval=00000000 ret=7f822012 0009:call msvcrt.putc(fffffffb,7d724018) ret=7f822012 0009:ret msvcrt.putc() retval=fffffffb ret=7f822012 0009:call msvcrt.putc(ffffffff,7d724018) ret=7f822012 0009:ret msvcrt.putc() retval=ffffffff ret=7f822012
I also get the three putc's of the builtin version but after that there are about 7000 lines of putc-calls like above and NO MORE putc calls at all in the builtin version. Also the output of the native debug output is a bit "diverted" (two calls in one line!). Till the lines above I can't see any differences (except the ones I already reported).
Might the missing RtlEnterCriticalSection calls lead to a problem? Isn't the wine msvcrt thread-safe?
If anyone is interested in the logs, I've put them onto my webspace :
http://gordon.cip.physik.uni-saarland.de/~oleid/origin6_builtin.log.bz2 http://gordon.cip.physik.uni-saarland.de/~oleid/origin6_native.log.bz2
Thanks a lot!
Ciao,
Olaf Leidinger