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

Re: Problems with mod_dav_svn.so on Windows

From: Branko ─îibej <brane_at_xbc.nu>
Date: 2002-06-21 21:54:47 CEST

So, the problem is that we link the release BDB into the debug
mod_dav_svn.so? Indeed, you're right! Thanks for the report, I'll fix
that ASAP.

In the meantime, go ahead and use the release mod_dav_svn.so -- it's
working fairly well for me.

Arild Fines wrote:

>Environment: Windows XP Pro, VS.NET Pro(Academic) with debug builds of
>Apache 2.0.40 and Subversion ~revision 2300
>I am trying to get the Subversion server component working on Windows XP.
>However, Apache crashed consistently with a debug assertion when I tried to
>check out a repository.
>With a little work, I found that the core of the problem was in these lines
>in svn_fs__get_node_revision(nodes-table.c in libsvn_fs):
>db_err = fs->nodes->get (fs->nodes, trail->db_txn,
> svn_fs__id_to_dbt (&key, id, trail->pool),
> svn_fs__result_dbt (&value),
> 0);
>svn_fs__track_dbt (&value, trail->pool);
>The relevant part of svn_fs_track_dbt(dbt.c) looks like this:
>apr_pool_cleanup_register (pool, dbt->data, apr_free_cleanup,
>This appears to be a Berkeley DB lookup, followed by assigning a clean up
>handler to the 'value' returned by BDB. Stepping further in, it seems that
>the assigned clean up handler merely calls free on its
>argument(value->data). Apache calls all these handlers after the request has
>been served by mod_dav_svn.so, and it is inside this particular clean up
>handler the assertion is raised.
>It seems that even the Debug configuration for the mod_dav_svn VC++ project
>links to the import library for libdb40.dll(Release build) instead of the
>one for libdb40d.dll(Debug build). I am guessing that this causes
>value->data to be allocated by the normal/release version of malloc() inside
>the release build of the BDB .dll(looking at BDB source seems to confirm
>this), while the clean_up handler calls the debug version of free(), thereby
>causing the assertion since they were not allocated from the same heap.
>I changed the VC++ project to link against libdb40d.lib instead of
>libdb40.lib, and now everything works fine.
>Arild Fines
>To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
>For additional commands, e-mail: dev-help@subversion.tigris.org

Brane ─îibej   <brane_at_xbc.nu>   http://www.xbc.nu/brane/
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Fri Jun 21 21:55:39 2002

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