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

RE: JavaHL testBasicLocking() crash

From: Paul Burba <pburba_at_collab.net>
Date: 2007-04-10 15:53:30 CEST

> -----Original Message-----
> From: Mark Phippard [mailto:markphip@gmail.com]
> Sent: Tuesday, April 10, 2007 9:42 AM
> To: Paul Burba
> Cc: Subversion Development; Daniel Rall
> Subject: Re: JavaHL testBasicLocking() crash
>
> On 4/9/07, Paul Burba <pburba@collab.net> wrote:
> > When running these JavaHL tests from trunk on Windows:
> >
> > org.tigris.subversion.javahl.tests.BasicTests.testCopy()
> > org.tigris.subversion.javahl.tests.BasicTests.testBasicLocking()
> >
> org.tigris.subversion.javahl.tests.BasicTests.testMergeInfoRetrieval()
> >
> > I get errors like this:
> >
> > C:\SVN\src-trunk>java -cp
> > C:\SVN\src-trunk\subversion\bindings\javahl\classes;"C:\Program
> > Files\Java\jdk1.6.0\jre\lib\ext\junit.jar" org.tigris.subversion.
> > javahl.tests.RunTests
> > ..........E...#
> > # An unexpected error has been detected by Java Runtime Environment:
> > #
> > # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at
> pc=0x10003b50, pid=4612,
> > tid=4024
> > #
> > # Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode) #
> > Problematic frame:
> > # C [libsvnjavahl-1.dll+0x3b50]
> > #
> > # An error report file with more information is saved as
> > hs_err_pid4612.log # # If you would like to submit a bug report,
> > please visit:
> > # http://java.sun.com/webapps/bugreport/crash.jsp
> > #

I should have already asked this, but has anyone tested a recent ( >
r24263) trunk build of the JavaHL bindings on Win32? Are you seeing the
same problem?

Anyone seeing anything similar on other platforms?

Again, the fact that this is apparently not happening on other platforms
makes me hesitate to commit the seemingly simple fix.

Paul B.

> > Looking at the lock test failure in detail I think I found the
> > problem, but I'm a bit mystified as to why it it's not a problem on
> > other platforms.
> >
> > First, the problem:
> >
> > eh's r23949 introduced the svn_wc__entry_versioned() macro which
> > called the new svn_wc__entry_versioned_internal() wrapper around
> > svn_wc_entry(). When SVN_DEBUG is not defined the macro called
> > svn_wc__entry_versioned_internal() with the const char
> > *caller_filename arg set to NULL, this looks ok because
> svn_error_t's
> > docs say we don't use in when not debugging:
> >
> > /** Source file where the error originated. Only used iff @c
> > SVN_DEBUG. */
> > const char *file;
> >
> >
> > The problem arises when r23949 meets dlr's r24263 in
> > subversion/bindings/java/javahl/native/JNIUtil.cpp:
> >
> > void JNIUtil::handleSVNError(svn_error_t *err) {
> > std::string msg;
> > assembleErrorMessage(err, 0, APR_SUCCESS, msg);
> > + std::ostringstream source;
> > + source << err->file << ':' << err->line;
> > throwNativeException(JAVA_PACKAGE "/ClientException",
> msg.c_str(),
> > - err->file, err->apr_err);
> > + source.str().c_str(), err->apr_err);
> > svn_error_clear(err);
> > }
> >
> > When we try to insert NULL (i.e. err->file) into the
> > std::ostringstream stream is when I get the
> EXCEPTION_ACCESS_VIOLATION
> > mentioned at the start. It's been a long time since I've
> written any
> > C++, but my understanding is that you can't insert NULL
> like this but
> > need to use ostream& ends ( ostream& os )?
> >
> > The fix for this problem seems really simple:
> >
> > [[[
> > Avoid EXCEPTION_ACCESS_VIOLATION error when running JavaHL tests on
> > Win32.
> >
> > * subversion/bindings/javahl/native/JNIUtil.cpp
> > (handleSVNError): Don't insert null pointer into
> std::ostringstream.
> > ]]]
> >
> > [[[
> > Index: subversion/bindings/javahl/native/JNIUtil.cpp
> > ===================================================================
> > --- subversion/bindings/javahl/native/JNIUtil.cpp
> (revision 24504)
> > +++ subversion/bindings/javahl/native/JNIUtil.cpp
> (working copy)
> > @@ -363,7 +363,7 @@
> > std::string msg;
> > assembleErrorMessage(err, 0, APR_SUCCESS, msg);
> > std::ostringstream source;
> > - source << err->file << ':' << err->line;
> > + source << (err->file ? err->file : "") << ':' << err->line;
> > throwNativeException(JAVA_PACKAGE "/ClientException",
> msg.c_str(),
> > source.str().c_str(), err->apr_err);
> > svn_error_clear(err);
> > ]]]
> >
> > But I have no idea why this only affects Win32 and that makes me
> > mildly suspicious that something else is going on. Any
> thoughts from
> > those with more C++ and/or Java knowledge?
> >
>
> Does anyone have the time to look at this? Currently the
> JavaHL bindings crash a lot on Windows, apparently due to this issue.
>
> --
> Thanks
>
> Mark Phippard
> http://markphip.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Apr 10 15:54:20 2007

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

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