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

RE: Problem launching Embarcadero ER/Studio after installing TortoiseSVN

From: Jim Brodrick <Jim.Brodrick_at_EMBARCADERO.COM>
Date: 2007-04-30 22:56:58 CEST

I am sorry that you had problems installing ER/Studio when tortoisesvn is installed. We are aware of this problem, and it is caused by the same issue I reported below. If I had known you were going to download ER/Studio I would have let you know about this.

I have identified the cause of the crash. It does not have so much to do with your product being a shell extension as it does with the fact that your product injects itself into the process context of ER/Studio at load time. If you look carefully at the dependency walker trace, you'll see that the dll init function of libapr_tsvn.dll was executing when both the stack overflow and the subsequent crash occurred.

After looking at dependency walker traces for loading the previous version of er/studio, I found that your dlls are linked to msvcr80.dll and msvcp80.dll. The crash appears to happen because the dll init routine in libapr_tsvn.dll crashes when the init routines for one or both of the msvc dlls have not already run to completion. We updated to a new version of a third party dll that is also linked to these dlls in the latest er/studio version. In this load configuration the msvc dll init routines are not called before the one in the above-mentioned dll. I fixed the crash by forcing the third-party dll (and thus the msvc dlls) to load sooner.

I realize that this is a complex loading scenario, but it seems that NT doesn't guarantee that the init routines of dependent dlls will run first in all cases. Since your dlls inject themselves into other process contexts, it would appear that the dll init routines need to handle cases like this.

Jim Brodrick
Director of Software Development
Embarcadero Technologies, Inc.
(831)658-0422
Jim.Brodrick@embarcadero.com

-----Original Message-----
From: Stefan Küng [mailto:tortoisesvn@gmail.com]
Sent: Saturday, April 28, 2007 6:54 AM
To: users@tortoisesvn.tigris.org
Cc: Jim Brodrick
Subject: Re: Problem launching Embarcadero ER/Studio after installing TortoiseSVN

Jim Brodrick wrote:
> The latest two released versions of TortoiseSVN (1.4.2 and 1.4.3) are
> incompatible with the latest release (7.1.2) of Embarcadero ER/Studio.
> Our application crashes on launch after TortiseSVN has been installed.
> The crash does not happen with TortoiseSVN 1.4.1.
>
> The crash appears to be related to hooking dlls loaded with our
> application. I have done Dependency Walker traces with TortoiseSVN
> 1.4.1 and 1.4.2. In 1.4.2, tortoisesvn.dll gets a stack overflow
> error at one point, then ntdll crashes a little while later. I can
> zip the traces up as text files and send them to you if that will help.

I've downloaded ERStudio 7.1 (the trial version), installed it and tried to reproduce the crash. And now I'm in a really bad mood:

* the installer fills up the whole screen, but doesn't take into account
   that some people have the taskbar enlarged to two (or more) columns.
   First of all: an installer must *never*, *ever* take the whole screen.
   I'd like to keep working on my own stuff while some app gets
   installed, especially if it takes as long as yours.
* After installing, I tried to start your app. Nothing happened. Nada.
   No error message, nothing. Using some tools I found that the app
   really got started, but quit right away. Now I started to wonder:
   was the installation ok? Do I miss some files? A registration key
   perhaps? My best guess: you have some global crash handler which
   'cleanly' exits your app if something goes wrong. But that's a bad
   idea - at least an error message or something would be nice.
* Fired up the dependency walker. Found out that while you're installing
   the MFC7.1 dll's, you don't install the *LOC dlls of MFC7.1. Which
   means while you won't get a crash by this, you'll eventually get into
   serious problems on non-english OS.
* Started the dependeny walker profiling. I guess that's what you did
   to find out that somehow TSVN was involved. Yes, the output of that
   profiling might look like it happens in the tsvn dll, but it doesn't.
* Startet VS2005, made it start ERSTUDIO.exe. *now* I got the crash.
* some long analysis later I found out that:
   - it's not the fault of TSVN.
   - while the tsvn dll is loaded, no piece of code inside the dll is
     ever called.
   - the stack overflow you mentioned happens in ERSTUDIO.exe, not the
     tsvn dll.
* since I now know why the crash happens, I tried to uninstall your app
   (it's a trial version after all, and I really have absolutely no use
   for it). See the emphasis on 'tried' to uninstall?
   Every attempt to uninstall your app only shows an error dialog:

---------------------------
>SetupDLL\SetupDLL.cpp (469)

pAPP:Embarcadero ER/Studio 7.1.2

PVENDOR:Embarcadero Technologies, Inc.

PGUID:975147A4-5167-444C-B52D-FA2A24F9F3CD

$10.1.0.238

@Windows XP Service Pack 2 (2600) BT_OTHER 376.22
---------------------------

really nice!
Now I had to manually remove your app, and search the registry for entries it installed.

Some hints about your app:
* any application is required to put an entry in the software panel for later uninstalling. Just a shortcut from the programs menu is not enough (actually, it's against the windows guidelines to put such a shortcut there). Your app doesn't have an entry to uninstall it in the software panel.
* You install some 'shared dlls' of your own, under HKLM\Software\Microsoft\windows\currentversion\shareddlls. But that shared dll is in your apps installation path. Which means that entry is bogus and wrong. Only put your dlls there if you put those dlls in a shared folder.
* test your installer, and especially your uninstaller. Believe me: if a user can't uninstall a trial version, he will *never* consider buying your product, even if he really could use it otherwise.
* Entering a lot of personal information on your website just to get a trial version is bad. Has your marketing department not realized yet that most people just enter bogus data there anyway? Trial versions should be easy available.

And once again: fix your uninstaller!!!!!!

Oh, and a little hint on where you can look to find out why your app
crashes: uninstall TSVN, but then install two or three other shell extensions. Doesn't matter what kind of shell extensions, just install a few of them (TSVN is maybe a little bit bigger than others, that's why you may have to install more than just one other extension). And you'll get the same effect.

> CONFIDENTIALITY NOTICE: This email message is for the sole use of the
> intended recipient(s) and may contain confidential and privileged
> information. Any unauthorized review, use, disclosure or distribution
> is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message.

By sending an email to ANY of my addresses you are agreeing that:
  1. I am by definition, "the intended recipient"
  2. All information in the email is mine to do with as I see fit and
     make such financial profit, political mileage, or good joke as it
     lends itself to. In particular, I may quote it on usenet.
  3. I may take the contents as representing the views of your company.
  4. This overrides any disclaimer or statement of confidentiality that
     may be included on your message.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.net
CONFIDENTIALITY NOTICE: This email message is for the sole use of the intended recipient(s) 
and may contain confidential and privileged information. Any unauthorized review, use, 
disclosure or distribution is prohibited. If you are not the intended recipient, please 
contact the sender by reply email and destroy all copies of the original message.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tortoisesvn.tigris.org
For additional commands, e-mail: users-help@tortoisesvn.tigris.org
Received on Tue May 1 07:16:31 2007

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