https://msdn.microsoft.com/en-us/library/ms235460.aspx
“Potential Errors Passing CRT Objects Across DLL Boundaries”
And really the first paragraph summarizes what happens here:
“When you pass C Run-time (CRT) objects such as file handles, locales, and environment variables into or out of a DLL (function calls across the DLL boundary), unexpected behavior can occur if the DLL, as well as the files calling into the DLL, use different copies of the CRT libraries.”
TortoiseSVN started to use a statically used CRT in all their .DLLs and just passed the CRT file handle of stdout between them.
They reverted to using a shared CRT in the latest builds which fixes these problems.
Bert
From: Fredrik Klasson
Sent: vrijdag 18 september 2015 13:36
To: bert_at_qqmail.nl
Cc: users_at_subversion.apache.org
Subject: Re: Redirection "svn info -r HEAD"
Ok thanks for the input :) Sounds reasonable to suspect CRT linkage issues since stdout/stderr I/O operations probably rely on the CRT behaving.
I'll see if a TortoiseSVN daily fixes the problem as soon as I get time. But if that doesn't fix it, so I should file a bug with TortoiseSVN instead then?
(Just out of curiosity, is there a particular set of bugs/mailinglist messages about the root cause for those CRT linkage problems? (being a developer I find it interesting to learn from other's linker/-age issues))
On Fri, Sep 18, 2015 at 11:47 AM, <bert_at_qqmail.nl> wrote:
The TortoiseSVN build of the commandline binaries in 1.9.0 and 1.9.1 have known issues. Please retry with another release (following the CRT linkage rules), or use a newer 1.9.x daily build of TortoiseSVN where the linkage problem is fixed.
I’m not sure if this fixes your specific problem, but I don’t have this known broken set of commandline binaries installed on my system. (I had to track a few similar cases earlier this week, all caused by this CRT linkage problem)
Bert
From: Fredrik Klasson
Sent: vrijdag 18 september 2015 11:34
To: users_at_subversion.apache.org
Subject: Redirection "svn info -r HEAD"
TL;DR: "svn info -r HEAD > testfile" produces and empty file with svn 1.9.1 on Windows. But svn 1.8.13 produces expected output in the file. Does this only happen for me?
When I updated to TortoiseSVN 1.9.1 (from 1.8.11), which uses svn 1.9.1 it seems redirection of "svn info -r HEAD" (or any other revision specification) no longer works for me in MS Windows. So I wonder if anyone else has experienced this too with subversion 1.9.1?
Some steps to reproduce the issue.
1. Install TortosieSVN 1.9.1
2. In a cmd.exe prompt with cwd being a svn working copy, type:
svn info
(expected output)
svn info > testfile
type testfile
(output that matches running without redirection)
3. Then try with the revisionargument (using -r or --revision):
svn info -r HEAD
(expected output)
svn info -r HEAD > testfile
type testfile
(nothing, i.e .file is empty; cf. running without the redirect)
And just for the sake of testing adding "--xml" makes svn info produce the expected output to the redirected file (that is "svn info -r HEAD --xml > testfile" works). So it seems only "plain"/"old" output is broken.
Downgrading to TortoiseSVN 1.8.11 which uses svn 1.8.13 makes "svn info -r HEAD > testfile" produce the expected file contents in the test file again.
For good measure, I've also tested building on a Linux machine, using subversion 1.9.1 (build from the svn tag/1.9.1). Redirection of "svn info -r ..." works as expected with that build. (My distro uses 1.8.13 currently so that's why I build from vanilla sources to test that). So this seems to only affect Windows.
Some additional info:
OS version: Windows 7 Professional (x64)
I couldn't find any bug report for this, but maybe I just didn't ask the database the right question. I haven't had time to try to build trunk or 1.9.1 vanilla on Windows, and I don't know if TortoiseSVN applies any patches on top of the svn it includes (I'd guess they do not apply any though).
Passing a path to a repo does not affect the behavior. Passing an invalid revision (e.g. "-r FOOBAR") produces an error message (as expected).
Cheers
/Fredrik
--
... a professor saying: "use this proprietary software to learn computer science" is the same as English professor handing you a copy of Shakespeare and saying: "use this book to learn Shakespeare without opening the book itself.
- Bradley Kuhn
--
... a professor saying: "use this proprietary software to learn computer science" is the same as English professor handing you a copy of Shakespeare and saying: "use this book to learn Shakespeare without opening the book itself.
- Bradley Kuhn
Received on 2015-09-18 15:35:41 CEST