[Wine] Big files; Slow I/O

L. Rahyen research at science.su
Wed Nov 21 13:38:47 CST 2007


On Wednesday November 21 2007 17:47, Jean-Michel Bruenn wrote:
> Hello again,
>
> i tried a bit arround with debugging. Can you tell me weather these
> messages are important and related to the issue I explained before? Or
> can I safely ignore them?

	In short yes, you can ignore them. Long answer below. You can find useful 
advises at the end of this message.

> WINEDEBUG="+relay,+file"
>
> ERR:
>     000c:Call advapi32.RegQueryValueExW(0000009c,008a440c
> L"Territory",00000000,7c9bd780,7c9bd77c,7c9bd778) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(000000a4,008a440c
> L"Territory",00000000,7c9bd764,7c9bd760,7c9bd75c) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(0000010c,008a440c
> L"Territory",00000000,7c9bd778,7c9bd774,7c9bd770) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(0000011c,008a440c
> L"Territory",00000000,7c9bd738,7c9bd734,7c9bd730) ret=0081159d
>     000c:Call advapi32.RegQueryValueExW(00000138,008a440c
> L"Territory",00000000,7c9bd270,7c9bd26c,7c9bd268) ret=0081159d

	RegQueryValueExW retrieves the type and data for the specified value name 
associated with an open registry key. So it *may* be a problem only if called 
during unusually slow file operations hundreds times per second and not 
during typical (fast) file operations.
	To be sure it is better to use profiling tools (see below for more 
information).

> WARN:
>     There are many warnings, mostly it's about missing .dll and .drv,
>     for example:
>
>         warn:file:wine_nt_to_unix_file_name L"avicap32.dll" not found
> in /root/.wine/dosdevices/c:/windows/system32
>         warn:file:wine_nt_to_unix_file_name L"avicap32.dll" not found
> in /root/.wine/dosdevices/c:/windows
>         warn:file:wine_nt_to_unix_file_name L"winealsa.drv" not found
> in /root/.wine/dosdevices/c:/windows/system32/drivers
>         warn:file:wine_nt_to_unix_file_name L"winealsa.drv" not found
> in /root/.wine/dosdevices/c:/windows/system32/drivers

	Often WINE searches multiples paths to find particular library but if at 
least one search succeeds there is no error and you can ignore these warnings 
(you can use "grep -v" to filter them out).

>     Seems to be search paths related errors, or something like this
>     Then i have some:
>
>         warn:file:wine_nt_to_unix_file_name L"\\??\\C:\\windows\
> \system32\ \WSOCK32.dll" ->
> "/root/.wine/dosdevices/c:/windows/system32/wsock32.dll" required a
> case-insensitive search

	This just means that "windows/system32/WSOCK32.dll" doesn't exist 
but "windows/system32/wsock32.dll" does. In Windows file system there is no 
difference but most Linux file systems are case-sensitive. So in such 
situation case-insensitive search required (this might be slow but can be a 
problem only if you search for hundreds or thousands of files per seconds).

> FIXME:
>     There are only d3d and dxdiag related messages plus these:
>         fixme:win:EnumDisplayDevicesW ((null),0,0x34ef70,0x00000000),
> stub!
>         fixme:win:EnumDisplayDevicesW ((null),0,0x34eb2c,0x00000000),
> stub!
>         fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator
> Category {cc7bfb41-f175-11d1-a392-00e0291f3959} not found
>         fixme:devenum:DEVENUM_ICreateDevEnum_CreateClassEnumerator
> Category {cc7bfb46-f175-11d1-a392-00e0291f3959} not found
>         fixme:imm:ImmGetIMEFileNameA (0x4090409, 0x7c9bd2c8, 260): stub

	These seems to be unrelated.

	*	*	*

	I want to give you some recommendations.

	First, *do not run WINE as root*! This is strongly discouraged practice. Run 
it under your usual user account.

	What about debugging. Because you want to find out what functions in WINE are 
slow, it is bad idea to just use debugging channels and try to find them 
manually. Most likely you just waste a lot of time and find nothing.
	What you want to do is to profile WINE not to debug it (in fact there is no 
bugs to debug in this case but some inefficiencies in the code). Therefore 
proper approach is to use profiling tools to find out what functions are slow 
in WINE. Read [1] for a brief introduction. Read [2] to find out how to use 
callgrind tool for profiling (see page 39, "Callgrind: a call graph 
profiler"); there is some other useful information in this document.
	You may want to install kcachegrind and read its help files - this is useful 
visual tool, you can use it with callgrind and OProfile. I really recommend 
you to read its help - it's short but helpful.
	Use Google to find more information.


[1] 
http://www.computer.org/portal/cms_docs_ieeecs/ieeecs/Communities/students/looking/2006Fall/02.pdf
[2] http://valgrind.org/docs/iiswc2006.pdf



More information about the wine-users mailing list