[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: DLLs compiled with same base address

From: <vss2svn_at_nogga.de>
Date: 2005-11-16 19:44:16 CET

Brad wrote:

>>> Many DLLs distributed with/in TortoiseSVN share a common base
>>> address.
>>> This can cause a performance hit when windows loads the DLL image.
>>
>>
>> Really? I always wondered why it was possible to change that base
>> address. I always use the default settings in my own projects. Guess
>> I'll have to change that...
>
>
> The hit is only when the DLL loads. Windows checks the base address
> in the DLL to see if it's already occupied. If it is, it loads the
> new DLL at an unoccupied address.
>
> If your DLL loads multiple times, or if you load lots of DLLs, it's
> worth it to change the base address, otherwise, it's a "nice to do"
> thing.
>
> I've never seen any performance hit while *using* a DLL that had to be
> relocated, only when loading it.

It is major debugging issue. Crash adresses will not map to the address
specified in the map file. Every guide on windows debugging will tell
you, that you better change the base address for your dlls before you go
any further.

e.g read http://www.codeproject.com/debug/crash_report.asp (The
documentation for the CrashRpt library that tortoiseSVN uses itself:

----
      A word about preferred base load addresses
Every executable module (EXE, DLL, OCX, whatever) has a preferred base 
load address. This is the address in the application's process space 
that the loader will try to map that module. If two or more modules list 
the same base load address, the loader will be forced to relocate the 
modules until each module loads at a unique address. Not only does this 
slow down the start up time of your application, but it also makes it 
impossible to debug fatal exceptions. In order to use the minidump file, 
you must ensure that your application's modules do not collide. You can 
use /rebase.exe/ or manually override the preferred base load address 
for each conflicting module. Either way you need to make sure that your 
application modules always load at the same address for the minidump 
file to be useful. You can find more information about this in John 
Robbin's April 1998 MSJ 
<http://www.microsoft.com/msj/0498/bugslayer0498.htm> column.
Dirk
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: users-help@tortoisesvn.tigris.org
--
Received on Wed Nov 16 18:48:37 2005

This is an archived mail posted to the TortoiseSVN Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.