[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Another MSVCRT problem, perhaps __RTDynamicCast()
From:       Uwe Bonnes <bon () elektron ! ikp ! physik ! tu-darmstadt ! de>
Date:       2009-01-30 10:16:23
Message-ID: 18818.54135.133908.740074 () elektron ! ikp ! physik ! tu-darmstadt ! de
[Download RAW message or body]

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@elektron.ikp.physik.tu-darmstadt.de

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic