Another MSVCRT problem, perhaps __RTDynamicCast()

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Fri Jan 30 04:16:23 CST 2009


Hello,

after registering at 
http://forms.analog.com/form_pages/rfcomms/adisimpll.asp?ref=ASC-PR-067
you can download ADIsimPLL Version 3.1  for free. Running the program (with
richedit from winetricks) it offers to run a tutorial. In the course of
clicking next in this tutorial, at some point some form gets filled with \
nonsense double values. This doesn't happen with native msvcrt.

I have instrumented msvcrt._ecvt() to print out the number. The number
printed is the nonsens number in the form.
Appended +relay,+msvcrt looks fishy:

0023:Call msvcrt.__RTDynamicCast(006f7a58,00000000,00543030,00544838,00000000) ret=0044019e
trace:msvcrt:MSVCRT___RTDynamicCast obj: 0x6f7a58 unknown: 0 src: 0x543030 {vtable=0x521568 name=.?AVYASymbol@@ ()} dst: 0x544838 {vtable=0x521568 name=.?AVLibDouble@@ ()} do_throw: 0)
trace:msvcrt:dump_obj_locator 0x524218: sig=00000000 base_offset=00000000 flags=00000000 type=0x544838 {vtable=0x521568 name=.?AVLibDouble@@ ()} hierarchy=0x524208
trace:msvcrt:dump_obj_locator   hierarchy: sig=00000000 attr=00000000 len=3 base classes=0x5241f8
trace:msvcrt:dump_obj_locator     base class 0x5241e0: num 2 off 0,-1,0 attr 00000000 type 0x544838 {vtable=0x521568 name=.?AVLibDouble@@ ()}
trace:msvcrt:dump_obj_locator     base class 0x524190: num 1 off 0,-1,0 attr 00000000 type 0x544818 {vtable=0x521568 name=.?AVLibVariable@@ ()}
trace:msvcrt:dump_obj_locator     base class 0x5234d8: num 0 off 0,-1,0 attr 00000000 type 0x543030 {vtable=0x521568 name=.?AVYASymbol@@ ()}
0023:Ret  msvcrt.__RTDynamicCast() retval=006f7a58 ret=0044019e
0023:Call msvcrt._ecvt(00000001,5f40255f,0000000a,00328dd4,00328ddc) ret=0040a952
0023:Call KERNEL32.TlsGetValue(00000000) ret=7ec3e471
0023:Ret  KERNEL32.TlsGetValue() retval=001b0678 ret=7ec3e471
trace:msvcrt:_ecvt num
6606512752554031389059083466263841847175093544956949844249843220093860018640324866\
420498348423671822060046924282328257865959227190774155226910868635648.000000, digits 10
0023:Call ntdll.RtlAllocateHeap(00110000,00000000,00000050) ret=7ec2de07
0023:Ret  ntdll.RtlAllocateHeap() retval=006e4550 ret=7ec2de07
0023:Ret  msvcrt._ecvt() retval=006e4550 ret=0040a952

I suspect __RTDynamicCast() to cause the error. Having not much C++
understanding, I don't feel like writing a sensible testcase. Can anybody
perhaps have a look? 

Thanks

-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------



More information about the wine-devel mailing list