WWN: wn20030919_188.xml

Brian Vincent vinn at theshell.com
Thu Sep 18 18:15:22 CDT 2003


-------------- next part --------------
<?xml version="1.0" ?>

<title>Wine Traffic</title>

<author contact="http://www.theshell.com/~vinn">Brian Vincent</author>
<issue num="188" date="09/19/2003" />
<intro> <p>This is the 188th issue of the Wine Weekly News publication.
Its main goal is to wander aimlessly on four wheel drive roads. It also serves to inform you of what's going on around Wine. Wine is an open source implementation of the Windows API on top of X and Unix.  Think of it as a Windows compatibility layer.  Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available.   You can find more info at <a href="http://www.winehq.com">www.winehq.com</a></p> </intro>
<stats posts="186" size="815" contrib="55" multiples="27" lastweek="26">

<person posts="30" size="124" who="Dimitrie O. Paun" />
<person posts="17" size="51" who="Mike Hearn" />
<person posts="16" size="106" who="Eric Pouech" />
<person posts="14" size="34" who="Alexandre Julliard" />
<person posts="7" size="139" who="Steven Edwards" />
<person posts="7" size="18" who="Francois Gouget" />
<person posts="6" size="16" who="Rolf Kalbermatter" />
<person posts="6" size="15" who="Shachar Shemesh" />
<person posts="5" size="48" who="Kevin Atkinson" />
<person posts="4" size="10" who="Sylvain Petreolle" />
<person posts="4" size="10" who="Lionel Ulmer" />
<person posts="4" size="10" who="Dmitry Timoshkov" />
<person posts="3" size="11" who="Tony Lambregts" />
<person posts="3" size="10" who="Philipp Wollermann" />
<person posts="3" size="9" who="Kristoffer Ericson" />
<person posts="3" size="8" who="Gerald Pfeifer" />
<person posts="3" size="8" who="Dan Kegel" />
<person posts="3" size="6" who="hatky" />
<person posts="2" size="7" who="Hengga" />
<person posts="2" size="7" who="Huw D M Davies" />
<person posts="2" size="6" who="Richard Cohen" />
<person posts="2" size="5" who="Vincent B&#233;ron" />
<person posts="2" size="5" who="Mike McCormack" />
<person posts="2" size="4" who="Fabian Cenedese" />
<person posts="2" size="4" who="Ivan Leo Murray-Smith" />
<person posts="1" size="6" who="Jakob Eriksson" />
<person posts="1" size="4" who="Roderick Colenbrander" />
<person posts="1" size="4" who="Pavel Roskin" />
<person posts="1" size="3" who="Stefan Leichter" />
<person posts="1" size="3" who="Brian Palmer" />
<person posts="1" size="3" who="Michael Stefaniuc" />
<person posts="1" size="3" who="Jason Edmeades" />
<person posts="1" size="3" who="Michael B. Trausch" />
<person posts="1" size="3" who="Rok Mandeljc" />
<person posts="1" size="3" who="ilmcuts" />
<person posts="1" size="2" who="Andreas Mohr" />
<person posts="1" size="2" who="Thomas Mertes" />
<person posts="1" size="2" who="Uwe Bonnes" />
<person posts="1" size="2" who="Dave Miller" />
<person posts="1" size="2" who="Anand Kumria" />
<person posts="1" size="2" who="Jukka Heinonen" />
<person posts="1" size="2" who="David Lee Lambert" />
<person posts="1" size="2" who="erwin wolff" />
<person posts="1" size="2" who="Jarkko Lavinen" />
<person posts="1" size="2" who="Shachar Shemesh" />
<person posts="1" size="2" who="Marcus Meissner" />
<person posts="1" size="2" who="Stephen Pedrosa Eilert" />
<person posts="1" size="2" who="Evalet Olivier" />
<person posts="1" size="1" who="flyker" />
<person posts="1" size="1" who="Marcelo Bezerra" />
<person posts="1" size="1" who="Ted Unangst" />
<person posts="1" size="1" who="(lineric)" />

	title="News: TransGaming Point2Play Update" 
<p>TransGaming updated their Point2Play utility.  Version 1.1.1
is considered
<quote who="TransGaming">
a maintenance release that
provides a number of incremental refinements and fixes some
reported issues</quote></p>

<p>See the 
<a href="http://downloads.transgaming.com/files/point2play-1.1.1_releasenotes.txt">release 
notes</a> for more details.</p>

	title="Winecfg Status &amp; Preferences" 
	subject="Configuration parameters"
<topic>Status Updates</topic>
<p>Mike Hearn has done a lot of improvements to Winecfg lately 
and took a moment to write a list of things that remain to
be done.  Any one of these would be a great way to get involved
with Wine.  (<i>ed note:</i> This originally appeared as a patch):
<quote who="Mike Hearn"><p>
 TODO:   (in rough order of priority)
   <li> A mind bogglingly vast amount of stuff</li>

   <li> Complete X11DRV page, so all controls are hooked up</li>
   <li> Implement autodetect for drive configuration</li>
   <li> Figure out whether we need the virtual vs real drive selection stuff at the top of the property page</li>
   <li> Implement explicit mode vs instant-apply mode</li>
   <li> AppDefaults handling</li>
   <li> DLL editing</li>
   <li> Make a list of prefs that have been dropped from the UI/should be eliminated</li>
   <li> Multimedia page</li>
   <li> Settings migration code (from old configs)</li>

<p>Dimi Paun dropped an email the next day with a list of preferences in
the current config file that needed to be reorganized.  Some of the
settings are too obscure to justify putting in a GUI config.  With
the improved registry editor it will be possible to just edit them
there (just like those operating systems from Redmond.)  Dimi's list:
</p><quote who="Dimitrie Paun"><p>
<table border="3" rules="all">
<tr> <th>Column</th> 
<tr> <td>Name</td> 
     <td>The name of the property/section</td> 
<tr> <td>Needed</td>
     <td>Describes the form the parameter in needed in:
	  <tr><td>no</td>     <td>The setting should be removed</td></tr>
	  <tr><td>ac</td>     <td>Changeable at configure time only</td></tr>
	  <tr><td>regedt</td> <td>Configurable through regedit only</td></tr>
	  <tr><td>cfg</td>    <td>Configurable through winecfg</td></tr>
<tr> <td>Dynamic</td>
     <td>Indicates if Wine should react to changes in the
         value of the parameter ar runtime</td>
<tr> <td>PerApp</td>
     <td>Describes if the configuration parameter need to be
         customizable on a per-application basis</td>
<tr> <td>Default value</td>
     <td>The default value for the property. This should allow Wine
         to run winecfg without user intervention</td>



<tr>		<th>Name</th>				<th>Needed</th> <th>Dynamic</th><th>PerApp</th>	<th>Default value</th></tr>

<tr class="section"> <th colspan="5" align="left">[Drive X]</th></tr>
<tr class="todo"> <td>Path</td>				<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Type</td>				<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Label</td>				<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Serial</td>				<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Filesystem</td>			<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Device</td>				<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>

<tr class="section"> <th colspan="5" align="left">[wine]</th></tr>
<tr class="todo"> <td>Windows</td>			<td>cfg</td>	<td>no</td>	<td>no</td>	<td>c:\\windows</td>		</tr>
<tr class="todo"> <td>System</td>				<td>cfg</td>	<td>no</td>	<td>no</td>	<td>c:\\windows\\system</td>	</tr>
<tr class="todo"> <td>Temp</td>				<td>cfg</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Path</td>				<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Profile</td>			<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>GraphicsDriver</td>			<td>regedt</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>ShowDirSymlinks</td>		<td>cfg</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>ShowDotFiles</td>			<td>cfg</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>ShellLinker</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>wineshelllink</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[Version]</th></tr>
<tr class="todo"> <td>Windows</td>			<td>cfg</td>	<td>no</td>	<td>yes</td>	<td>win98</td>			</tr>
<tr class="todo"> <td>DOS</td>				<td>cfg</td>	<td>no</td>	<td>yes</td>	<td>6.22</td>			</tr>

<tr class="section"> <th colspan="5" align="left">[DllOverrides]</th></tr>
<tr class="todo"> <td>&lt;dllname&gt;</td>		<td>cfg</td>	<td>no</td>	<td>yes</td>	<td></td>			</tr>

<tr class="section"> <th colspan="5" align="left">[x11drv]</th></tr>
<tr class="todo"> <td>AllocSystemColors</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>PrivateColorMap</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>PerfectGraphics</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>ScreenDepth</td>			<td>cfg</td>	<td>yes</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Display</td>			<td>cfgt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Managed</td>			<td>no</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>Desktop</td>			<td>cfg</td>	<td>no</td>	<td>yes</td>	<td>640x480</td>		</tr>
<tr class="todo"> <td>UseDGA</td>				<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>UseXVidMode</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>UseTakeFocus</td>			<td>cfg</td>	<td>yes</td>	<td>no</td>	<td>yes</td>			</tr>
<tr class="todo"> <td>DXGrab</td>				<td>cfg</td>	<td>no</td>	<td>no</td>	<td>no</td>			</tr>
<tr class="todo"> <td>DesktopDoubleBuffered</td>		<td>cfg</td>	<td>no</td>	<td>no</td>	<td>no</td>			</tr>
<tr class="todo"> <td>Synchronous</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>no</td>			</tr>
<tr class="todo"> <td>ClientSideWithRender</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td>yes</td>			</tr>
<tr class="todo"> <td>ClientSideWithCode</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td>yes</td>			</tr>
<tr class="todo"> <td>ClientSideAntiAliasWithRender</td>	<td>regedt</td>	<td>no</td>	<td>no</td>	<td>yes</td>			</tr>
<tr class="todo"> <td>ClientSideAntiAliasWithCode</td>	<td>regedt</td>	<td>no</td>	<td>no</td>	<td>yes</td>			</tr>

<tr class="section"> <th colspan="5" align="left">[fonts]</th></tr>
<tr class="todo"> <td>Resolution</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>
<tr class="todo"> <td>Default</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>
<tr class="todo"> <td>DefaultFixed</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>
<tr class="todo"> <td>DefaultSerif</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>
<tr class="todo"> <td>DefaultSansSerif</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[FontDirs]</th></tr>
<tr class="todo"> <td>dir&lt;no&gt;</td>			<td>regedt</td>	<td>no</td>	<td>yes</td>	<td>&lt;auto&gt;</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[serialports]</th></tr>
<tr class="todo"> <td>Com&lt;no&gt;</td>			<td>regedt</td>	<td>no</td>	<td>yes</td>	<td>/dev/ttySx</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[parallelports]</th></tr>
<tr class="todo"> <td>Lpt&lt;no&gt;</td>			<td>regedt</td>	<td>no</td>	<td>yes</td>	<td>/dev/lpx</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[ppdev]</th></tr>
<tr class="todo"> <td>&lt;port&gt;</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>/dev/parportX</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[spooler]</th></tr>
<tr class="todo"> <td>FILE:</td>				<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>
<tr class="todo"> <td>LPT&lt;no&gt;:</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[ports]</th></tr>
<tr class="todo"> <td>read</td>				<td>cfg</td>	<td>no</td>	<td>no</td>	<td>0x779,0x280-0x2a0</td>	</tr>
<tr class="todo"> <td>write</td>				<td>cfg</td>	<td>no</td>	<td>no</td>	<td>0x779,0x280-0x2a0</td>	</tr>

<tr class="section"> <th colspan="5" align="left">[Debug]</th></tr>
<tr class="todo"> <td>RelayExclude</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>RelayInclude</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>RelayFromExclude</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>RelayFromInclude</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>SnoopExclude</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>
<tr class="todo"> <td>SpyExclude</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td></td>			</tr>

<tr class="section"> <th colspan="5" align="left">[registry]</th></tr>
<tr class="todo"> <td>GlobalRegistryDir</td>		<td>ac</td>	<td>no</td>	<td>no</td>	<td>/etc</td>			</tr>
<tr class="todo"> <td>LoadGlobalRegistryFiles</td>	<td>regedt</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>LoadHomeRegistryFiles</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>LoadWindowsRegistryFiles</td>	<td>regedt</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>WritetoHomeRegistryFiles</td>	<td>regedt</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>PeriodicSave</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>600</td>			</tr>
<tr class="todo"> <td>SaveOnlyUpdatedKeys</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>

<tr class="section"> <th colspan="5" align="left">[Tweak.Layout]</th></tr>
<tr class="todo"> <td>WineLook</td>			<td>cfg</td>	<td>yes</td>	<td>no</td>	<td>Win95</td>			</tr>

<tr class="section"> <th colspan="5" align="left">[Clipboard]</th></tr>
<tr class="todo"> <td>ClearAllSelections</td>		<td>regedt</td>	<td>yes</td>	<td>no</td>	<td>false</td>			</tr>
<tr class="todo"> <td>PersistentSelection</td>		<td>regedt</td>	<td>yes</td>	<td>no</td>	<td>true</td>			</tr>

<tr class="section"> <th colspan="5" align="left">[afmdirs]</th></tr>
<tr class="todo"> <td>1</td>				<td>regedt</td>	<td>no</td>	<td>no</td>	<td>/usr/share/ghostscript/fonts</td> </tr>
<tr class="todo"> <td>2</td>				<td>regedt</td>	<td>no</td>	<td>no</td>	<td>/usr/share/a2ps/afm</td>	</tr>
<tr class="todo"> <td>3</td>				<td>regedt</td>	<td>no</td>	<td>no</td>	<td>/usr/share/enscript</td>	</tr>
<tr class="todo"> <td>4</td>				<td>regedt</td>	<td>no</td>	<td>no</td>	<td>/usr/X11R6/lib/X11/fonts/Type1</td> </tr>

<tr class="section"> <th colspan="5" align="left">[WinMM]</th></tr>
<tr class="todo"> <td>Drivers</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>&lt;auto&gt;</td>		</tr>
<tr class="todo"> <td>WaveMapper</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>msacm.drv</td>		</tr>
<tr class="todo"> <td>MidiMapper</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>midimap.drv</td>		</tr>

<tr class="section"> <th colspan="5" align="left">[Network]</th></tr>
<tr class="todo"> <td>UseDnsComputerName</td>		<td>regedt</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>

<tr class="section"> <th colspan="5" align="left">[DSound]</th></tr>
<tr class="todo"> <td>HELmargin</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>5</td>			</tr>
<tr class="todo"> <td>HELqueue</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>5</td>			</tr>
<tr class="todo"> <td>SndQueueMax</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>28</td>			</tr>
<tr class="todo"> <td>SndQueueMin</td>			<td>regedt</td>	<td>no</td>	<td>no</td>	<td>12</td>			</tr>
<tr class="todo"> <td>HardwareAcceleration</td>		<td>cfg</td>	<td>no</td>	<td>no</td>	<td>true</td>			</tr>
<tr class="todo"> <td>DefaultPlayback</td>		<td>cfg</td>	<td>no</td>	<td>no</td>	<td>0</td>			</tr>
<tr class="todo"> <td>DefaultCapture</td>			<td>cfg</td>	<td>no</td>	<td>no</td>	<td>0</td>			</tr>
<tr class="todo"> <td>EmulDriver</td>			<td>cfg</td>	<td>no</td>	<td>yes</td>	<td>true</td>			</tr>


<p>There was a bit of discussion on the details of some of those
options.  Everyone seemed to agree on most of them.</p>

	title="System Tray Support" 
	subject="Re: resend - system tray support"
<p>Mike Hearn reposted a patch to add 
<a href="http://www.freedesktop.org/standards/xembed-spec/0.5-html/">XEmbed</a>
system tray support,
<quote who="Mike Hearn">
I'm going to keep sending this flipping patch until it gets in, or I
find out what the next problem is you know. There's no escape! :)</quote>

<p>Alexandre duly replied with things he didn't like,
<quote who="Alexandre Julliard">
Well, at least the critical section handling is broken, but the real
problem is that all this stuff doesn't belong in shell32. We should
really redesign it to get rid of the internal WS_EX_TRAYWINDOW flag
and have a separate process to manage the tray window (plus other
background tasks like the progman DDE interface, and maybe the desktop
window too).</quote></p>

<p>There was then some debate over those details.  Rolf Kalbermatter
felt a bunch of it did belong in shell32 because Microsoft seemed
to have some interfaces there, including DDE.  Dmitry Timoshkov
looked into and reported,
<quote who="Dmitry Timoshkov">
After looking again at the shell32 from win2k SP4 I've found that it really
has the strings used by the progman DDE interface. The reason why I didn't
find the first time is that strings are spread over the code section. So,
yes, it seems that at least the progman DDE interface handler is residing
in shell32. Now the question is: how we should implement it? Just add a
necessary atom "progman" and create a hidden window on dll load event, or
wait for some apparently undocumented API call and initialize only then?

<p>Dmitry's questions went unanswered.  Before the thread ended
Sylvain Petreolle mentioned he had 
applied the patch and reported success with Yahoo Messenger.  

	title="Blank Screen of Death" 
	subject="Starting wine turns off my screen"
<p>Philipp Wollermann ran into a problem with the following symptoms:</p>
<quote who="Philipp Wollermann"><p>

I recently installed Mandrake 9.1 and updated it to the newest packages .. I'm 
using the ATI fglrx 3.2.5 driver for XFree 4.3.0 (I have a Hercules Radeon 
9700) and playing 3D games like tuxracer works great. However, when I try to 
start any program with wine my screen gets dark and goes into standby. This 
happens even with Notepad or the programs included with Wine! This problem 
didn't happen on my earlier installations of Linux, but I can't say if it's 
the driver of my graphics card (maybe I should try an older version? mmh.), 
my Mandrake 9.1 or wine itself (I'm using the current version from CVS, just 
updated). Maybe somebody had this problem too and knows how to get wine 
running again?
The funny thing is: My PC keeps running, I can connect to it using SSH and 
kill wine, but this doesn't do anything about my screen. I can even start 
wine again (wine notepad.exe) and it gives me the usual output, no Errors or 

<p>Sylvain Petreolle asked what version of Wine he was running.  
Philipp reported it was the latest CVS.  Roderick Colenbrander
jumped in an diagnosed the problem, 
<quote who="Roderick Colenbrander">
 The problem you have is a bug in the dga code of the ati drivers. To
workaround the problem set the option UseDGA to N in your config file. The strange
part is that dga only works for root users and that this problem also appears
for non-root users.

<p>Phillip changed the option and reported success.</p>

	title="Finding Memory Management Problems" 
	subject="Bug in the heap management code?"
<topic>Memory Management</topic>
<p>Michael G&#252;nnewig needed help figuring out what a game
was trying to do and why it broke Wine:</p>
<quote who="Michael Gunnewig"><p>

When I try to play "The Elder Scroll III: Tribunal" version 1.4.1313
german under wine I get a page fault after some time. The time span
differs and so the calling point of the heap management but it always
occurs in HEAP_CreateFreeBlock in line 415.
Generating of a full "-debugmsg +heap" log is nearly impossible
because it takes too long to start the game and start playing
(after > 200 min. it still wasn't finished with initializing). 

<p>Mike Hearn offered his condolences,
<quote who="Mike Hearn">
This is very much like a problem I am having with InstallShield.
Something, somewhere, is trashing the heap data structures, which causes
a crash some time later, often yards away from the original bug. As far
as I know, there is no good way to spot this problem, it's just C/C++
sucking.... maybe valgrind might help?


<p> Shachar Shemesh had an idea how memory use could be tracked but
it involved Changing the way Wine allocates memory :</p>
<quote who="Shachar Shemesh"><p>
Something else that might help is an algorithm I suggested a long time 
ago, and which was not thought as worth the effort. Since I have not 
tried to run Wine with valgrind yet, I don't know whether it is or isn't.
The gist of it is that you pad each and every alloc with more memory, 
and you fill it in with signatures. When you release the memory, you 
check that the signatures are ok. Tweaking the amount of extra memory 
can cause you to not corrupt the heap structure at some point, which 
will allow you reliable pin-pointing the buffer in which the overflow 
I have never worked with valgrind (though I love the principle behind 
it), so I can't say whether it is more effective at this sort of 
problems. My method, in any case, is not very difficult to implement, so 
if valgrind does not provide what you need, I may invest the time in it.


<p>Eric Pouech didn't think it would work in a lot of cases and also suggested
<quote who="Eric Pouech"><p>
The issue with this approach is that you only trigger the check when 
releasing the block. It might well happen that the crash takes place 
before you free the memory. IMO, this is well suited to situations where 
either you have, from time to time, synchronisation points (you check 
the heap situation) or you check a memory block before using it (think 
of overloading operator-> in C++).
In this case it would help if:
<li> crash doesn't take place before buffer release</li>
<li> you are able to identify the buffer (where it has been allocated)</li>
<li> then you can set a hardware watchpoint on the buffer to know who 
overwrites it</li>
tricky but doable.
IMO, running valgrind will allow you actually stop on the faulty write 
operation. valgrind is worth a try.

	title="Library Loading Problem" 
	subject="load library problem"
<p>Dimi had a problem loading a library:</p>
<quote who="Dimitrie Paun"><p>
I have flagged this before, but got no answer. Once again,
this a C++ Winelib app (one of the wxWindows samples):
 trace:module:load_dll Trying native dll 'C:\WINDOWS\SYSTEM\calendar-wrap.dll'<br />
warn:module:load_dll Failed to load module 'C:\WINDOWS\SYSTEM\calendar-wrap.dll'; status=c000000f<br />
Error: Could not load the application's module calendar-wrap.dll (126)<br />

The piece of code that fails is from the automatically generated wrapper[1].
Here is the part that fails:

I have the WINEDLLPATH set, what gives? Alexandre, I can't really track
this easily back, but I have a gut feeling it got triggered by one of
the reorganizations that you did around the loader...</p></quote>

<p>Vincent Beron suggested changing WINEDLLPATH to include the
current working directory.  It didn't help.  Eric Pouech then posted
a small patch to winewrapper, but Dimi reported he wasn't using it.
Then Eric suggested,
<quote who="Eric Pouech">
 Another issue could be the (.so) dependencies on wine-calendar.dll.so
 which cannot be resolved.</quote></p>

<p>Dimi posted how it was linked:</p>
<quote who="Dimitrie Paun"><p>
Hmm, that would be very odd.
Do you see any problem with these:
[dimi_at_dimi calendar]$ ldd calendar.exe.so<br />
&#160;&#160;&#160;&#160;libwine.so =&gt;usr/local/lib/libwine.so (0x40029000)<br />
&#160;&#160;&#160;&#160;libdl.so.2 =&gt;lib/libdl.so.2 (0x40040000)<br />
&#160;&#160;&#160;&#160;libstdc++.so.5 =&gt;usr/lib/libstdc++.so.5 (0x40044000)<br />
&#160;&#160;&#160;&#160;libm.so.6 =&gt;lib/tls/libm.so.6 (0x400f8000)<br />
&#160;&#160;&#160;&#160;libgcc_s.so.1 =&gt;lib/libgcc_s.so.1 (0x4011a000)<br />
&#160;&#160;&#160;&#160;libc.so.6 =&gt;lib/tls/libc.so.6 (0x42000000)<br />
&#160;&#160;&#160;&#160;/lib/ld-linux.so.2 =&gt;lib/ld-linux.so.2 (0x80000000)<br />
[dimi_at_dimi calendar]$ ldd calendar-wrap.dll.so<br />
&#160;&#160;&#160;&#160;libwine.so =&gt;usr/local/lib/libwine.so (0x402f5000)<br />
&#160;&#160;&#160;&#160;libstdc++.so.5 =&gt;usr/lib/libstdc++.so.5 (0x4030c000)<br />
&#160;&#160;&#160;&#160;libm.so.6 =&gt;lib/tls/libm.so.6 (0x403bf000)<br />
&#160;&#160;&#160;&#160;libgcc_s.so.1 =&gt;lib/libgcc_s.so.1 (0x403e2000)<br />
&#160;&#160;&#160;&#160;libc.so.6 =&gt;lib/tls/libc.so.6 (0x42000000)<br />
&#160;&#160;&#160;&#160;libdl.so.2 =&gt;lib/libdl.so.2 (0x403ea000)<br />
&#160;&#160;&#160;&#160;/lib/ld-linux.so.2 =&gt;lib/ld-linux.so.2 (0x80000000)</code></ul>

It seems to me calendar-wrap.dll.so has the same dependencies
as calendar.exe.so (in a bit different order, does it matter?)

<p>It appeared some private exchange took place off list, then Eric
wrote the list with the solution,
<quote who="Eric Pouech">
after some more exchanges with Dimi, it turned out that this was caused 
by a too short buffer in relay32/builtin32.c_at_BUILTIN32_LoadLibraryExA 
(dllname was way to short).
Alexandre, any reason for keeping this at 20 chars ?

<p>Alexandre committed a change and explained,
<quote who="Alexandre Julliard">
No, there's no reason, that's a leftover from the Win16 version. It
should probably be MAX_PATH or something like that.


More information about the wine-patches mailing list