[Bug 1131] rpcrt4.dll.so with ms office 2k

Wine Bugs wine-bugs at winehq.com
Sat Jun 28 07:59:33 CDT 2003


http://bugs.winehq.com/show_bug.cgi?id=1131





------- Additional Comments From z_god at wanadoo.nl  2003-28-06 07:59 -------
Bug comments restored from Gmane.org: 
 
when using the cvs build of wine with ms office 2000, trying to start an 
application brings up the app splash screen followed by a wine-debug window... 
last error message: 
0x40a6c45c (RPCRT4.DLL.UuidToStringA+0x40 in rpcrt4.dll.so): movzbl    
0xf(%esi),%eax 
 
any ideas? 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-07 10:41 
------- 
Hmm, interesting crash. 
Could you please give *detailed* output, though ? 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-07 11:01 ------- 
is this what you are looking for? 
this is the full contents of the debug window... 
 
WineDbg starting on pid 8378c98 
No debug information in ELF 'wine' (0x00000000) 
Breakpoint 1 at 0x4000acb0 
Loaded debug information from ELF '/usr/lib/libntdll.dll.so' (0x40024000) 
No debug information in ELF '/usr/lib/libwine.so' (0x40122000) 
No debug information in ELF '/usr/lib/libwine_unicode.so' (0x40139000) 
No debug information in ELF '/lib/i686/libm.so.6' (0x4021a000) 
No debug information in ELF '/lib/libdl.so.2' (0x4023c000) 
No debug information in ELF '/lib/ld-linux.so.2' (0x40000000) 
No debug information in ELF '/lib/libnss_files.so.2' (0x40240000) 
No debug information in ELF '/usr/lib/wine/advapi32.dll.so' (0x40743000) 
No debug information in ELF '/usr/lib/wine/kernel32.dll.so' (0x40773000) 
No debug information in ELF '/usr/lib/wine/gdi32.dll.so' (0x40822000) 
No debug information in ELF '/usr/lib/wine/ole32.dll.so' (0x408a0000) 
No debug information in ELF '/usr/lib/wine/user32.dll.so' (0x4090d000) 
No debug information in ELF '/usr/lib/wine/rpcrt4.dll.so' (0x40a31000) 
No debug information in ELF '/usr/lib/libfreetype.so.6' (0x40a79000) 
No debug information in ELF '/usr/lib/wine/x11drv.dll.so' (0x40ac2000) 
No debug information in ELF '/usr/X11R6/lib/libSM.so.6' (0x40b23000) 
No debug information in ELF '/usr/X11R6/lib/libICE.so.6' (0x40b2c000) 
No debug information in ELF '/usr/X11R6/lib/libXxf86dga.so' (0x4024a000) 
No debug information in ELF '/usr/X11R6/lib/libXv.so' (0x40b43000) 
No debug information in ELF '/usr/X11R6/lib/libXext.so.6' (0x40b47000) 
No debug information in ELF '/usr/X11R6/lib/libX11.so.6' (0x40b55000) 
No debug information in ELF '/usr/X11R6/lib/X11/locale/common/xlcUTF8Load.so.2' 
(0x40019000) 
No debug information in ELF '/usr/X11R6/lib/X11/locale/common/ximcp.so.2' 
(0x40c33000) 
No debug information in ELF '/usr/X11R6/lib/libXrender.so.1' (0x4001b000) 
No debug information in 32bit DLL 'C:\Program Files\Microsoft 
Office\Office\EXCEL.EXE' (0x30000000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\NTDLL.DLL' (0x40060000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\KERNEL32.DLL' 
(0x407b0000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\ADVAPI32.DLL' 
(0x40760000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\GDI32.DLL' (0x40840000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\USER32.DLL' 
(0x40940000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\RPCRT4.DLL' 
(0x40a50000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\OLE32.DLL' (0x408c0000) 
No debug information in 32bit DLL 'C:\PROGRAM FILES\MICROSOFT 
OFFICE\OFFICE\MSO9.DLL' (0x308c0000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\X11DRV.DLL' 
(0x40ae0000) 
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\ACTXPRXY.DLL' 
(0x70390000) 
Unhandled exception: page fault on read access to 0x0000000f in 32-bit code 
(0x40a6c45c). 
In 32-bit mode. 
0x40a6c45c (RPCRT4.DLL.UuidToStringA+0x40 in rpcrt4.dll.so): movzbl     
0xf(%esi),%eax 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-07 11:05 
------- 
Ah, I see. 
Hmm, could you also post the additional lines done by a "backtrace" ? 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-07 11:08 ------- 
here is the backtrace 
 
=>0 0x40a6c45c (RPCRT4.DLL.UuidToStringA+0x40 in rpcrt4.dll.so) (ebp=40731cc0)   
  1 0x40a661d9 (RPCRT4.DLL.NdrDllRegisterProxy+0xc9 in rpcrt4.dll.so) (ebp=40731 
e04)                                                                             
  2 0x70391bfc (ACTXPRXY.DLL.DllRegisterServer+0x26 in 
C:\WINDOWS\SYSTEM\ACTXPRX 
Y.DLL) (ebp=40731f68)                                                            
  3 0x3000dae8 (EXCEL.EXE.EntryPoint+0xb490 in C:\Program Files\Microsoft Office 
\Office\EXCEL.EXE) (ebp=40732cfc)                                                
  4 0x30005968 (EXCEL.EXE.EntryPoint+0x3310 in C:\Program Files\Microsoft Office 
\Office\EXCEL.EXE) (ebp=40732de4)                                                
  5 0x300027e4 (EXCEL.EXE.EntryPoint+0x18c in C:\Program Files\Microsoft Office\ 
Office\EXCEL.EXE) (ebp=40732e00)                                                 
  6 0x300026e5 (EXCEL.EXE.EntryPoint+0x8d in C:\Program Files\Microsoft Office\O 
ffice\EXCEL.EXE) (ebp=40732e8c)                                                  
  7 0x400c5500 (start_process+0x238 [process.c] in libntdll.dll.so) (ebp=40732f3 
0)                                                                               
  8 0x400c9479 (call_on_thread_stack+0x79 [sysdeps.c] in libntdll.dll.so) (ebp=4 
0732ff4)                                                                         
  9 0x400c95b4 (SYSDEPS_CallOnStack+0x14 in libntdll.dll.so) (ebp=00000000) 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-07 12:48 
------- 
Hmm, sorry, I simply see that I don't see at which line exactly it crashes. 
Sounds like it's missing some debug information... 
 
Could you also paste "info local" and "info reg" ? 
Thanks ! 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-07 12:55 ------- 
here it is...hope it helps! 
 
info local:  
  RPCRT4.DLL.UuidToStringA: 
 
info reg: 
  Register dump:                                                                  
   CS:0023 SS:002b DS:002b ES:002b FS:008f GS:0000                                
   EIP:40a6c45c ESP:40731cb8 EBP:40731cc0 EFLAGS:00010206(  R- 00  I   - -P1 )    
   EAX:0000000e EBX:40a78e44 ECX:4025001c EDX:4028dd00                            
   ESI:00000000 EDI:7039f990 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-07 13:07 
------- 
Sorry, not at all. No information here either :-\ 
Could you attach a --debugmsg +relay,+ole logfile ? 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-07 14:02 ------- 
Created an attachment (id=327)
 --> (http://bugs.winehq.com/attachment.cgi?id=327&action=view) 
+relay,+ole trace !!!Warning....77mb when uncompressed!!! 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-07 15:14 
------- 
Hmm, the program calls NdrDllRegisterProxy: 
 
083765d8:Call rpcrt4.NdrDllRegisterProxy(70390000,7039f370,703982b0) ret=70391bf 
c 
trace:ole:NdrDllRegisterProxy 
(0x70390000,0x7039f370,{b8da6310-e19b-11d0-933c-00 
a0c90dcaa9}) 
083765d8:Call ntdll.RtlAllocateHeap(40250000,00000000,00000025) ret=40a6c442 
083765d8:Ret  ntdll.RtlAllocateHeap() retval=4028e078 ret=40a6c442 
trace:ole:NdrDllRegisterProxy registering IActiveScriptStats {70395720-57a2-7039 
-b255-397000000000} => b8da6310-e19b-11d0-933c-00a0c90dcaa9 
083765d8:Call ntdll.RtlAllocateHeap(40250000,00000000,00000025) ret=40a6c442 
083765d8:Ret  ntdll.RtlAllocateHeap() retval=4028e128 ret=40a6c442 
 
which then leads to: 
 
083765d8:Ret  advapi32.RegCloseKey() retval=00000000 ret=40a66291 
trace:ole:NdrDllRegisterProxy registering IActiveScriptParseProcedure2 (null) => 
 b8da6310-e19b-11d0-933c-00a0c90dcaa9 
083765d8:Call ntdll.RtlAllocateHeap(40250000,00000000,00000025) ret=40a6c442 
083765d8:Ret  ntdll.RtlAllocateHeap() retval=4028e128 ret=40a6c442 
083765d8:Call kernel32.UnhandledExceptionFilter(40620900) ret=302c34f5 
wine: Unhandled exception, starting debugger... 
 
Note that proxy->header.piid is null !! 
 
But AFAICS UuidToString should handle the first argument (null) just fine. 
(it properly assigns the null uuid to it in case it's null). 
Why that now crashes is beyond me... 
 
Could you add some more TRACEs to dlls/rpcrt4/rpcrt4_main.c/UuidToStringA() 
in order to nail down why exactly it crashes in that function ? 
 
Thanks ! 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-07 15:23 ------- 
as i am new to this, can you tell me what it is you want me to add to 
dlls/rpcrt4/rpcrt4_main.c/UuidToStringA()? sorry for the ignorance... 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-07 17:13 
------- 
Oh come on :-) 
You don't want to tell me you don't know to add a simple TRACE ? :) 
Just add something like 
TRACE("stupid trace\n"); 
and then tell me in which line it crashes. 
(preferrably also with printout of variables if possible) 
(sorry, I'm too stupid to manage to think why and where exactly it might crash, 
so you'll have to tell me :-\) 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-08 12:07 ------- 
naw, man... 
i don't think you understand... 
i am a router/firewall guy, not a programmer... 
in order to do this, i would need very explicit instructions... 
sorry! 
:-/ 
 
 
------- Additional Comments From tony_lambregts <at> telusplanet.net 2002-11-08 
13:58 ------- 
choose your favorite test editor and edit 
where_ever_wine_is/dlls/rpcrt4/rpcrt4_main.c  
 
search for UuidToStringA 
 
You should end up with at this 
 
/************************************************************************* 
 *           UuidToStringA   [RPCRT4.@] 
 * 
 * Converts a UUID to a string. 
 * 
 * UUID format is 8 hex digits, followed by a hyphen then three groups of 
 * 4 hex digits each followed by a hyphen and then 12 hex digits 
 * 
 * RETURNS 
 * 
 *  S_OK if successful. 
 *  S_OUT_OF_MEMORY if unsucessful. 
 */ 
RPC_STATUS WINAPI UuidToStringA(UUID *Uuid, LPSTR* StringUuid) 
{ 
  *StringUuid = HeapAlloc( GetProcessHeap(), 0, sizeof(char) * 37); 
 
  if(!(*StringUuid)) 
    return RPC_S_OUT_OF_MEMORY; 
 
  if (!Uuid) Uuid = &uuid_nil; 
 
  sprintf(*StringUuid, 
"%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
                 Uuid->Data1, Uuid->Data2, Uuid->Data3, 
                 Uuid->Data4[0], Uuid->Data4[1], Uuid->Data4[2], 
                 Uuid->Data4[3], Uuid->Data4[4], Uuid->Data4[5], 
                 Uuid->Data4[6], Uuid->Data4[7] ); 
 
  return RPC_S_OK; 
} 
--- 
 
Insert trace statements before each statement so we an find out what is going 
wrong like so 
 
/************************************************************************* 
 *           UuidToStringA   [RPCRT4.@] 
 * 
 * Converts a UUID to a string. 
 * 
 * UUID format is 8 hex digits, followed by a hyphen then three groups of 
 * 4 hex digits each followed by a hyphen and then 12 hex digits 
 * 
 * RETURNS 
 * 
 *  S_OK if successful. 
 *  S_OUT_OF_MEMORY if unsucessful. 
 */ 
RPC_STATUS WINAPI UuidToStringA(UUID *Uuid, LPSTR* StringUuid) 
{ 
TRACE("before HeapAlloc") 
  *StringUuid = HeapAlloc( GetProcessHeap(), 0, sizeof(char) * 37); 
TRACE("Before if(!(*StringUuid))") 
  if(!(*StringUuid)) 
    return RPC_S_OUT_OF_MEMORY; 
TRACE("Before if(!Uuid)") 
  if (!Uuid) Uuid = &uuid_nil; 
TRACE("Before sprintf(") 
 
  sprintf(*StringUuid, 
"%08lx-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", 
                 Uuid->Data1, Uuid->Data2, Uuid->Data3, 
                 Uuid->Data4[0], Uuid->Data4[1], Uuid->Data4[2], 
                 Uuid->Data4[3], Uuid->Data4[4], Uuid->Data4[5], 
                 Uuid->Data4[6], Uuid->Data4[7] ); 
TRACE("Before Return") 
  return RPC_S_OK; 
} 
 
Save the file and do a "make && make depend", "su" "make 
install" cycle so the 
traces are in the wine binary 
 
 
Is that simple enough or would you want more help? 
 
 
------- Additional Comments From jms <at> josh.com  2002-11-08 23:08 ------- 
ok, so when adding the trace statements to rpcrt4_main.c following the  
instructions you gave, i noticed that you had an additional if condition that  
the current cvs source (20021031) didn't actually include... 
"if (!Uuid) Uuid = &uuid_nil;" 
i added it to the file, did a make depend,make, make install and i now can  
start excel... 
sorry for the lack of knowledge on the debugging, but i figured i would do the  
right thing when i came across the error and lend help the best i could... 
 
any clue as to how to get it to stop telling me that "the file you are trying  
to open doesn't exist" when i try to open a file that truely does exist? 
Thanks again for your help! 
 
 
------- Additional Comments From tony_lambregts <at> telusplanet.net 2002-11-09 
00:09 ------- 
It looks like the "if (!Uuid) Uuid = &uuid_nil;" was added to CVS since the last 
snapshot (20021031). (I use CVS bleading edge So that solves that.) 
 
About the file not being found I think you should start a new bug report for 
that. I think it might be a case sensitivity thing but without a trace I 
wouldn't know. Please open a new bug report and I will see what I can do. 
 
 
Resolving fixed (fix is already in cvs) 
 
 
------- Additional Comments From andi <at> rhlx01.fht-esslingen.de  2002-11-09 03:16 
------- 
Argl ! Now that's why I couldn't find any problem within this function. 
 
20021031 is **NOT** current CVS. 
CVS is CVS, and it's *much* more current than the STANDARD RELEASE 20021031, 
of 
course (tons of new patches). 
 
Anyway, glad to see your issue fixed :) 
 
Hmm, about the file problem: no idea. 
You could open a separate bug (with current CVS, pleeezze !!!) and attach a 
--debugmsg +relay,+file,+dosfs,+commdlg logfile. 
 
 
------- Additional Comments From dpaun <at> rogers.com  2003-03-30 23:13 ------- 
Closing time. 

-- 
Configure bugmail: http://bugs.winehq.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list