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

Re: Docbug: SVN_ASP_DOT_NET_HACK required more often than listed

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: 2006-04-19 21:46:01 CEST

Joachim Durchholz wrote:
> Stefan Küng schrieb:
>> Joachim Durchholz wrote:
>>
>>> I had TortoiseSVN working well for a while. When installing CorelDraw
>>> Essentials 2 SE, I started to get alert boxes reading "The dynamic
>>> link library gdiplus.dll could not be found in the system path
>>> "C:\WinNT;..."." (wording may vary, I got that message
>>> in German).
>>
>> From which app do you get that error message?
>
> Windows Explorer.

So a shell extension would be the suspect here.

>>> Checking accesses via FileMon revealed that explorer.exe was checking
>>> oodles of
>>> "filter" extensions for the .svn directory. Together with my background
>>> knowledge that GDI+ is a part of .net, this made me think about the
>>> .net hack.
>>
>> What do you mean with "filter extensions"?
>
> Extensions that can be hooked into Windows Explorers. They were in the
> "Filters" folder of CorelDraw, and I vaguely remember having seen that
> terminology in registry keys, too.
> Essentially, that's

So, my guess would be that at least one of those filters needs
gdiplus.dll. The problem with shell extensions is that they have
problems finding dll's which aren't in the windows\system32 directory
(since the explorer is located there, and dll's are loaded from the
location the app is stored in first).
Maybe the problem really is simple:
I guess CorelDraw sets the PATH env variable so that it also points to
the bin folder of CorelDraw (or the filters) itself, and in that
directory the gdiplus.dll is also present. But that means that you must
reboot your computer after installing CorelDraw (or the filters),
because already running apps (like explorer, which is *always* running
as the desktop process) don't know about the changed PATH variable and
therefore can't find the files.

>> GDI+ is *not* part of .net, but an additional dll which can be
>> redistributed freely, and many apps do (it's installed with XP by
>> default). Since MS clearly states that you should not install the
>> gdiplus.dll into the windows/system32 dir yourself, most apps don't do
>> that. But as I found out, many apps not well tested on Win2k assume
>> that gdiplus.dll is always there and don't install it (maybe Corel is
>> such an app). In that case, you can get the gdiplus.dll from MS and
>> put it into your windows\system32 directory.
>
> Oh, I *have* it. Actually many, many times:
> C:\Programme\Ahead\Nero Toolkit
> C:\Programme\Macromedia\Dreamweaver MX 2004
> Three times in .net folders (one for .net 1.0, one for .net 1.1, and one
> for .net 2.0) (can't find out the exact location right now, I'm typing
> this on another machine that doesn't seem to have .net installed).
>
> The latter three files were why I was assuming it's .net stuff; I wasn't
> aware that MS is distributing GDI+ separately from .net.

You should download the latest gdiplus.dll from MS, and then replace
*all* versions you have in those directories. There was a bug in earlier
versions which allowed viruses to execute code by simply showing a
picture. MS even provided a tool which scans the whole harddrive for
such older versions of gdiplus.dll - because they knew that programs had
to install those in their 'private' folders. That prevented the normal
windows update from effectively close that security hole - many apps
were still vulnerable.

>> TortoiseSVN also uses that dll, but only when you save the revision
>> graph as e.g. a png file. And it loads that dll dynamically, so if you
>> don't save the revision graph, TSVN doesn't even touch that dll.
>>
>>> In fact, applying the .net hack made the problem vanish.
>>
>> I seriously doubt that.
>
> Sorry, it's fact, not made-up.
>
> I did the following:
> * Logged in as Administrator
> * Called up the Environment Variables panel
> * Added a system variable as per the description, value 1
> * Logged out and logged as Administrator
> * Clicked around in Windows Explorer and did *not* get the messages.
>
> After this, I renamed all .svn directories to _svn and found it working
> beautifully. Saved me a full checkout of all the repositories.

Did you reboot after you installed CorelDraw? I think that would have
fixed the issue too.

> I had logged on as Administrator to install Corel, then logged off and
> logged on as normal user. The error message occurred in the user
> account; I then logged off, logged on as Administrator, and checked
> again, just to find that the messages would appear there as well. (So
> it's not related to which user the software was installed as, too.)

Check the PATH env variable. If CorelDraw only changed the one for the
user who installed it and not the SYSTEM wide PATH variable, then of
course you have such problems.
Also, just logging off and on again doesn't close the explorer process
for sure (depending on your system settings). You really should try to
reboot.

I can understand why you think that enabling the asp_dot_net_hack fixed
your problem. But I know how it works, and it really has no effect on
dll loading or other explorer related things. The only thing it does is
make TSVN/Subversion look for _svn dirs instead of .svn dirs. And that
is done during program startup (i.e. when the Subversion client start
up) by checking if the hack is enabled, then the string "_svn" is
written to a global variable, if it's not enabled, the string ".svn" is
left in that variable (it is initialized that way). From that time on,
everything is done completely identical whether the hack is active or not.
So you see, it really would be more than strange if the asp_dot_net_hack
could fix such an issue.

> Um... should I reply personally and to the list, or should I leave out
> one of the addresses?

When you get answers to your mailing list posts, that means the one who
answers is subscribed to the list or reads the posts e.g. with a
newsreader or browser in the archives. So you don't have to cc the one
who answers. But you should of course always reply to the list.

> Also, I'm not on any list or newsgroup, so please reply directly, too.
> (Sorry, forgot to mention that on my first post.)

I figured that, since I had to moderate your mail through :)

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.tigris.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: dev-help@tortoisesvn.tigris.org
Received on Wed Apr 19 21:47:11 2006

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

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