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

Re: Tortoise brings down xplorer2

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: 2006-05-10 17:45:25 CEST

zabkat info wrote:

> I develop xplorer2, a windows explorer clone, which collaborates quite well
> with tortoiseSVN both in terms of icon overlays and extra column handlers
> for SVN-controlled folders. I am currently working on the next version 1.6
> which will improve the speed even further, you can get a snapshot here:
>
> www.ps.ic.ac.uk/~umeca74/dbmon.zip (800KB, see readme for beta testing)

Looks nice!
But I get an assertion on startup:
---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: D:\Downloads\dbmon\kenny.exe
File: d:\umeca74\my documents\cpp\newkenny\namelist.h
Line: 113

Expression: m_strHelpFmt.GetLength() && m_strHelpFmt.Find(L'\n') == -1

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Abbrechen Wiederholen Ignorieren
---------------------------

Not a big problem, just wanted to let you know.

> [make sure you check the advanced option "extract custom icon overlays" from
> Tools | Options menu command]
>
> Anyway, this is not a plug for xplorer2 but a sort of bug report, for lack
> of a better name! Basically when tortoise is installed, my program _crashes_
> when displaying file properties, and tortoise causes the crash one way or
> another
>
> DETAILS: To reproduce the crash, open x2, use Window | Scrap container
> command to create a virtual folder and drag drop a few files in it, making
> sure they are from DIFFERENT folders (2 items will suffice). Then select all
> and pick File | Properties, then crash/bang!
>
> Internally x2 is using SHMultiFileProperties to display the property sheet
> for these items. I believe I set up the dataobject properly (well it works
> if tortoise isn't installed!). The API call for the property sheet returns
> apparently successfully but before the property sheet is shown some
> background thread crashes with the following stack trace within ILCLONE:
>
> SHELL32! 7c9eb06f() [ILCLONE] @@@ACCESS VIOLATION!
> SHELL32! 7c9eb4f4() [ILCOMBINE]
> TORTOISESVN! 1000e475() ???
> 00161ac8()
>

I can reproduce the crash.
I've set up VS2005 as the debugger and let xplorer2 run in it, while
attaching the debugger to the tsvn shell extension dll.

* if only one file or files within the same folder are selected and F12
is pressed, no crash. The TSVN dll is called several times (almost every
breakpoint is hit in it).
* if two files from different directories are selected, xplorer2 crashes
on F12. But: the TSVN dll isn't even called! No API of the dll is called
before the crash occurs. ???

I get this in the debug window:
MDOB(00d20a00): QueryInterface for
{0000010E-0000-0000-C000-000000000046}... OK
MDOB(00d20a00): AddRef, current lock count = 1
MDOB(00d20a00): AddRef, current lock count = 2
MDOB(00d20a00): Release, current lock count = 1
MDOB(00d20a00): AddRef, current lock count = 2
kenny.exe has triggered a breakpoint
The thread 'Win32 Thread' (0x138c) has exited with code 0 (0x0).
MDOB(00d20a00): GetData for {Shell IDList Array, 00000000,
DVASPECT_CONTENT, -1, TYMED_HGLOBAL | }... OK in HGLOBAL medium
MDOB(00d20a00): GetData for {Shell Object Offsets, 00000000,
DVASPECT_CONTENT, -1, TYMED_HGLOBAL | }... FAILED! hr = 0x8004006a
MDOB(00d20a00): GetData for {Shell IDList Array, 00000000,
DVASPECT_CONTENT, -1, TYMED_HGLOBAL | }... OK in HGLOBAL medium
MDOB(00d20a00): AddRef, current lock count = 3
MDOB(00d20a00): GetData for {Shell IDList Array, 00000000,
DVASPECT_CONTENT, -1, TYMED_HGLOBAL | }... OK in HGLOBAL medium
MDOB(00d20a00): Release, current lock count = 2
MDOB(00d20a00): Release, current lock count = 1
MDOB(00d20a00): AddRef, current lock count = 2
MDOB(00d20a00): GetData for {CF_HDROP, 00000000, DVASPECT_CONTENT, -1,
TYMED_HGLOBAL | }... OK in HGLOBAL medium
MDOB(00d20a00): Release, current lock count = 1
MDOB(00d20a00): GetData for {Shell IDList Array, 00000000,
DVASPECT_CONTENT, -1, TYMED_HGLOBAL | }... OK in HGLOBAL medium
First-chance exception at 0x016f066a in kenny.exe: 0xC0000005: Access
violation reading location 0x018f817f.

> Since I don't have the source I wonder if somebody could tell me exactly
> what your code is trying to do and why should it be crashing in some
> apparently standard pidl duplication procedure?

Sourcecode is available here:
http://tortoisesvn.tigris.org/svn/tortoisesvn

(use 'Guest' with an empty password to get in).

> Any tips or help appreciated. I can supply registration keys if required,
> although the trial version will work in full trim for 21 days after
> installation.

What does the background thread which crashes do? Where/why does it crash?
The crash only occurs if files from different directories are involved.
So we have to concentrate on that. But since the tortoisesvn.dll
functions aren't called before the crash, I can't do much.

If you want to debug TSVN yourself:
* grab the sourcecode (checkout trunk)
* put the sourcecode somewhere beside your own sourcecode of xplorer2
* tell me - I will then send you a big file containing my latest build
including the debug symbols (pdb file) and a registry file which you
have to edit and then execute.

Or you can send me the sourcecode of xplorer2 and I'll try to debug it
myself - but I kinda doubt that you're allowed or want to do that :)

> PS. The debug version link I have supplied will dump information on the
> dataobject use; the
> last thing printed before the crash (on my PC at least) is:
>
> MDOB(00d1bd10): GetData for {Shell IDList Array, 00000000, DVASPECT_CONTENT,
> -1, TYMED_HGLOBAL | }... OK in HGLOBAL medium
>
> That's my dataobject returning the idlist format to the caller,
> successfully, but then tortoisesvn is crashing on it...

As you can see from my debug output, the crash is in kenny.exe, not in
the TSVN dll.

Hmmm - the callstack shows this:
        TrtseShl.dll!016f066a()
          [Frames below may be incorrect and/or missing, no symbols loaded
for TrtseShl.dll]
          TrtseShl.dll!016722cf()
          shell32.dll!7c9ffa18()
          shell32.dll!7c9ffa23()
          msvcrt.dll!77bfc2e3()
          shell32.dll!7c9ff9d7()
          shell32.dll!7ca1e92a()
          shell32.dll!7ca88607()
          shell32.dll!7ca88a6a()
          kernel32.dll!7c809988()
          kernel32.dll!7c80999b()
          ntdll.dll!7c92056d()
          kernel32.dll!7c809988()
          kernel32.dll!7c80999b()
          ntdll.dll!7c92056d()
          kernel32.dll!7c80999b()
          shell32.dll!7cae4eb1()
          rpcrt4.dll!77e56098()
          rpcrt4.dll!77e560a4()
          ntdll.dll!7c929bd3()
          ntdll.dll!7c920895()
          ntdll.dll!7c929a9c()
          ntdll.dll!7c929b3f()
          ntdll.dll!7c929aeb()
          ole32.dll!774cf344()
          ole32.dll!774cf4c3()
          ole32.dll!774cd6bc()
          ole32.dll!774cd7dc()
          ole32.dll!774cd20a()
          ole32.dll!774cd1d7()
          ole32.dll!774cf5e1()
          ole32.dll!774cd8a5()
          ole32.dll!774cf1ad()
          ole32.dll!774cf0f3()
          ole32.dll!774cf106()
          ole32.dll!774cf05b()
          ole32.dll!774cd20a()
          ole32.dll!774cd1d7()
          ole32.dll!774cf74f()
          ole32.dll!774cf6e9()
          shell32.dll!7ca9fbc4()
          shlwapi.dll!77f5429a()
          ntdll.dll!7c91e2dc()
          kernel32.dll!7c80b50b()
          kernel32.dll!7c8399f3()
          shlwapi.dll!77f5422b()

But TrtseShl.dll is the Tortoise*CVS* shell extension dll, not the
TortoiseSVN dll. Do you have TortoiseCVS installed too?

-- 
        ___
   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 May 10 17:45:43 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.