libapr_tsvn32.dll excluded from 1.9.3?

380 views
Skip to first unread message

Tim Green

unread,
Jan 4, 2016, 11:38:40 AM1/4/16
to us...@tortoisesvn.tigris.org
Our 32-bit application uses the client command line interface to communicate with SVN and if Tortoise is installed that defaults to libapr_tsvn32.dll. This DLL seems to have been excluded from Tortoise 1.9.3 in the 64-bit installation. As a result our users are getting an error message and can only use our SVN functions if they downgrade their Tortoise installation back to 1.9.2. 

We checked the version numbers of the DLLs and they don't appear to have changed for libapr_tsvn.dll, but a quick test with the copy of libapr_tsvn32.dll from 1.9.2 doesn't work with 1.9.3. It just gets an invalid address access error. 

I checked all the change logs and mailing lists and couldn't find any reference to this DLL being removed from the current installation of Tortoise. Is it possible that this is an error, or has it been removed for some specific reason? If so, is it possible to access the client command line interface in a different way as of this update? Or is it necessary to use a different client?

Regards,
Tim


Stefan Küng

unread,
Jan 4, 2016, 2:08:47 PM1/4/16
to us...@tortoisesvn.tigris.org
Due to various problems with deploying the c-runtime, the x64 version
now only contains one single 32-bit dll that's linked statically to the
c-runtime. There's now only the libsvn_tsvn32.dll which contains the apr
and apr-util libs as well.

Stefan


--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest interface to (Sub)version control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3153594

To unsubscribe from this discussion, e-mail: [users-un...@tortoisesvn.tigris.org].

Tim Green

unread,
Jan 5, 2016, 8:00:55 AM1/5/16
to us...@tortoisesvn.tigris.org, Stefan Küng
Hi Stefan,

Thanks for the quick reply!

> Due to various problems with deploying the c-runtime, the x64 version
> now only contains one single 32-bit dll that's linked statically to the
> c-runtime. There's now only the libsvn_tsvn32.dll which contains the apr
> and apr-util libs as well.

Was the DLL reference in your reply a typo? The libsvn_tsvn32.dll file is the one that is no longer present in the x64 distribution. It now only contains the libsvn_tsvn.dll file.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3153668

Stefan Küng

unread,
Jan 5, 2016, 8:29:41 AM1/5/16
to us...@tortoisesvn.tigris.org
On Tue, Jan 5, 2016 at 6:28 AM, Tim Green <tim....@ec-software.com> wrote:
Hi Stefan,

Thanks for the quick reply!

> Due to various problems with deploying the c-runtime, the x64 version
> now only contains one single 32-bit dll that's linked statically to the
> c-runtime. There's now only the libsvn_tsvn32.dll which contains the apr
> and apr-util libs as well.

Was the DLL reference in your reply a typo? The libsvn_tsvn32.dll file is the one that is no longer present in the x64 distribution. It now only contains the libsvn_tsvn.dll file.


The libsvn_tsvn32.dll *is* present, at least for me, using the x64 version of TSVN 1.9.3 on three different machines.

Stefan


--
       ___
  oo  // \\      "De Chelonian Mobile"
 (_,\/ \_/ \     TortoiseSVN
   \ \_/_\_/>    The coolest Interface to (Sub)Version Control
   /_/   \_\     http://tortoisesvn.net

Tim Green

unread,
Jan 6, 2016, 11:08:41 AM1/6/16
to us...@tortoisesvn.tigris.org
Hi Stefan,

> The libsvn_tsvn32.dll *is* present, at least for me, using the x64 version
> of TSVN 1.9.3 on three different machines.

Then there appears to be a problem in some installations because it is the missing libsvn_tsvn32.dll that is causing the issue. When I upgrade from 1.9.2 to 1.9.3 on a Windows 10 Surface Pro 3 the file is definitely removed from the installation and no longer present. A number of our users are also reporting this. There are not very many of them yet. If this is only happening on some configurations that would explain it, combined with the fact that people generally take quite a while to upgrade if they are not experiencing specific problems.

So far, everyone has been able to solve the problem by downgrading to 1.9.2, provided that they have also manually installed the missing C++ runtimes for 32 bit from Microsoft.

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3153882

Stefan Küng

unread,
Jan 6, 2016, 3:14:04 PM1/6/16
to us...@tortoisesvn.tigris.org
On 06.01.2016 08:42, Tim Green wrote:
> Hi Stefan,
>
>> The libsvn_tsvn32.dll *is* present, at least for me, using the x64
>> version of TSVN 1.9.3 on three different machines.
>
> Then there appears to be a problem in some installations because it
> is the missing libsvn_tsvn32.dll that is causing the issue. When I
> upgrade from 1.9.2 to 1.9.3 on a Windows 10 Surface Pro 3 the file is
> definitely removed from the installation and no longer present. A
> number of our users are also reporting this. There are not very many
> of them yet. If this is only happening on some configurations that
> would explain it, combined with the fact that people generally take
> quite a while to upgrade if they are not experiencing specific
> problems.
>
> So far, everyone has been able to solve the problem by downgrading to
> 1.9.2, provided that they have also manually installed the missing
> C++ runtimes for 32 bit from Microsoft.

Ok, some confusion here:
Sometimes you refer to libsvn_tsvn32.dll and then to libapr_tsvn32.dll.

So to clear things up:
libsvn_tsvn32.dll must be there.
libapr_tsvn32.dll must not be there.

But I'll change it so that in the next version (and tomorrows nightly
builds) the libsvn_tsvn32.dll also isn't needed anymore.

Stefan

--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest interface to (Sub)version control
/_/ \_\ http://tortoisesvn.net

Tim Green

unread,
Jan 7, 2016, 4:37:10 AM1/7/16
to us...@tortoisesvn.tigris.org, Stefan Küng
Hi Stefan,

> Ok, some confusion here:
> Sometimes you refer to libsvn_tsvn32.dll and then to libapr_tsvn32.dll.
>
> So to clear things up:
> libsvn_tsvn32.dll must be there.
> libapr_tsvn32.dll must not be there.
>
> But I'll change it so that in the next version (and tomorrows nightly

Oops, so sorry for the typos. Yes, I was always actually referring to libapr_tsvn32.dll. This is missing since 1.9.3 and the communication with SVN from our application is no longer working without it, because users are just getting a message saying it isn't there. If they downgrade to 1.9.2 everything works again.

Our developers have been referring to libapr_tsvn32.dll for the client CL communication (I'm handling this for them at the moment from the support desk). The question is, now that it is no longer there, where should the calls they were making now go for 32-bit applications?

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3154021

Stefan Küng

unread,
Jan 7, 2016, 12:52:05 PM1/7/16
to us...@tortoisesvn.tigris.org
On 07.01.2016 06:10, Tim Green wrote:
> Hi Stefan,
>
>> Ok, some confusion here: Sometimes you refer to libsvn_tsvn32.dll
>> and then to libapr_tsvn32.dll.
>>
>> So to clear things up: libsvn_tsvn32.dll must be there.
>> libapr_tsvn32.dll must not be there.
>>
>> But I'll change it so that in the next version (and tomorrows
>> nightly
>
> Oops, so sorry for the typos. Yes, I was always actually referring to
> libapr_tsvn32.dll. This is missing since 1.9.3 and the communication
> with SVN from our application is no longer working without it,
> because users are just getting a message saying it isn't there. If
> they downgrade to 1.9.2 everything works again.
>
> Our developers have been referring to libapr_tsvn32.dll for the
> client CL communication (I'm handling this for them at the moment
> from the support desk). The question is, now that it is no longer
> there, where should the calls they were making now go for 32-bit
> applications?

First: you should never ever rely on a non-documented dll.

That said: you can use the libsvn_tsvn32.dll for now, and from the next
version on the TortoiseSVN32.dll.

Stefan



--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest interface to (Sub)version control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3154152

Michael Schwarzl

unread,
Jul 18, 2016, 10:50:49 AM7/18/16
to us...@tortoisesvn.tigris.org
Hello Stefan,

I would like to pick up this topic. I examined the TortoiseSVN32.dll within the latest 1.9.4 64-bit installer. There are only two functions exposed within the dll:
> DllCanUnloadNow
> DllGetClassObject

How do you suggest to connect to the DLL and perform operations like Add, Upload, Update, Delete, Retrieve status and more within our software? (In several cases I have to collect the status information of several thousand files.)

Thank you in advance!
Best regards,
Michael

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3179256

Stefan Küng

unread,
Jul 18, 2016, 4:07:00 PM7/18/16
to us...@tortoisesvn.tigris.org
On 18.07.2016 16:18, Michael Schwarzl wrote:
> Hello Stefan,
>
> I would like to pick up this topic. I examined the TortoiseSVN32.dll
> within the latest 1.9.4 64-bit installer. There are only two
> functions exposed within the dll:
>> DllCanUnloadNow DllGetClassObject

first of all: the 32-bit dll that comes with the x64 version of TSVN
only has very, very limited functionality. For example, it lacks all
networking stuff. That's because it's only needed for the shell
extension and doesn't need to do much.

>
> How do you suggest to connect to the DLL and perform operations like
> Add, Upload, Update, Delete, Retrieve status and more within our
> software? (In several cases I have to collect the status information
> of several thousand files.)

You'd have to use the 64-bit version of that dll.
And to use the TSVN dlls, you would need the headers from here:
https://svn.apache.org/repos/asf/subversion/branches/1.9.x/subversion/include

That's where the API is defined, and those APIs have to be used from
that dll.

I'm not sure if the APIs are exported as C-functions or C++-functions -
it doesn't really matter for TSVN so I've never paid attention to that.

You can try to get the exported functions via GetProcAddress() and see
if that works.

But I think it would be better if you could use the dlls from an
official svn command line client - those are guaranteed to stay the same
and compatible, while the TSVN dll is not and can change at any time.

Stefan

--
___
oo // \\ "De Chelonian Mobile"
(_,\/ \_/ \ TortoiseSVN
\ \_/_\_/> The coolest interface to (Sub)version control
/_/ \_\ http://tortoisesvn.net

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3179287

Michael Schwarzl

unread,
Jul 29, 2016, 6:52:06 AM7/29/16
to us...@tortoisesvn.tigris.org
> You'd have to use the 64-bit version of that dll.
> And to use the TSVN dlls, you would need the headers from here:
> https://svn.apache.org/repos/asf/subversion/branches/1.9.x/subversion/include
Since our application is 32-bit this DLL cannot be used directly.

> You can try to get the exported functions via GetProcAddress() and see
> if that works.
That is the way I use every DLL. And it worked fine until version 1.9.3
TortoiseSVN32.dll just exports two functions that can be accessed via GetProcAddress.

> But I think it would be better if you could use the dlls from an
> official svn command line client - those are guaranteed to stay the same
> and compatible, while the TSVN dll is not and can change at any time.

We recommend our users to use Tortoise Client because your shell integration is great and gives the users control over the files and their status.
Additionally I tried to use latest Tortoise Client and latest CollabNet Client libraries but the file cache ( .svn folder ) seemed to be incompatible.

Thank you for your help!
Michael

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3180588

Stefan Hett

unread,
Jul 29, 2016, 8:00:34 AM7/29/16
to us...@tortoisesvn.tigris.org
Hi,
>> But I think it would be better if you could use the dlls from an
>> official svn command line client - those are guaranteed to stay the same
>> and compatible, while the TSVN dll is not and can change at any time.
> We recommend our users to use Tortoise Client because your shell integration is great and gives the users control over the files and their status.
> Additionally I tried to use latest Tortoise Client and latest CollabNet Client libraries but the file cache ( .svn folder ) seemed to be incompatible.

Hm... that's unexpected. Did you use CollabNet Subversion Edge or
CollabNet Subversion? If the sooner, maybe retry with CollabNet
Subversion? Maybe their Edge distribution contains some proprietary
format changes (though I would doubt that since it would mean that their
WCs would be incompatible with other SVN tools/clients).

You didn't mix 32-bit with 64-bit clients by accident, did you?

--
Regards,
Stefan Hett

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3180593

Michael Schwarzl

unread,
Jul 30, 2016, 8:19:11 AM7/30/16
to us...@tortoisesvn.tigris.org
Since this is some months ago, I'n not sure which client I used.
I'll give a new try.

Regards,
Michael

------------------------------------------------------
http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3180686
Reply all
Reply to author
Forward
0 new messages