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

Re: svn commit: r31145 - trunk/subversion/bindings/swig/python/libsvn_swig_py

From: <epg_at_google.com>
Date: Fri, 16 May 2008 12:05:40 -0700

djames_at_tigris.org writes:

> Author: djames
> Date: Mon May 12 16:04:59 2008
> New Revision: 31145
>
> Log:
> Sweep through swigutil_py.c, fixing reference-count memory leaks.
>
> Review by: epg

Well, it *looked* fine...

> @@ -2099,18 +2107,23 @@ svn_error_t *svn_swig_py_delta_path_driv
> apr_pool_t *pool)
> {
> PyObject *function = callback_baton;
> - PyObject *result;
> + PyObject *result, *py_parent_baton;
> svn_error_t *err = SVN_NO_ERROR;
>
> if (function == NULL || function == Py_None)
> return err;
>
> svn_swig_py_acquire_py_lock();
> +
> + py_parent_baton = svn_swig_NewPointerObjString(parent_baton,
> + "void *",
> + NULL);
> +
> result = PyObject_CallFunction(function, (char *)"OsO&",
> - svn_swig_NewPointerObjString(parent_baton,
> - "void *",
> - application_py
> _pool),
> + py_parent_baton,
> path, make_ob_pool, pool);
> +
> +
> if (result == NULL)
> {
> err = callback_exception_error();
> @@ -2127,6 +2140,8 @@ svn_error_t *svn_swig_py_delta_path_driv
> }
> }
>
> + Py_XDECREF(result);
> + Py_XDECREF(py_parent_baton);
> svn_swig_py_release_py_lock();
> return err;
> }

After this change, using svn_swig_py_delta_path_driver leads to a
segfault later on. I'm not sure why our own test suite does not
trigger it, but gvn's definitely does. I thought it might be
that you use NULL where I used application_py_poo (I still don't
understand what's up with those pools), but changing that didn't
help. Dropping the decref of py_parent_baton didn't, either.

This segfault has been merged to 1.5.x, so we need to get to the
bottom of it ASAP. Let me know if you need anything else from
me.

(gdb) bt
#0 0xf7b33b21 in add_child (child=0xffffa184, cc=0x74696e75,
    parent=0x74736574, name=0x838e6b0 "greek-tree", created=0, revision=4,
    pool=0x8364510) at subversion/libsvn_ra_neon/commit.c:373
#1 0xf7b34b07 in commit_open_dir (
    path=0x838a710 "changes/unittest/ood/projects/greek-tree",
    parent_baton=0x838e688, base_revision=4, dir_pool=0x838e620,
    child_baton=0xffffa1e0) at subversion/libsvn_ra_neon/commit.c:936
#2 0xf7bbd9df in open_dir (db_stack=0x8348540, editor=0x8328fe8,
    path=0x838a710 "changes/unittest/ood/projects/greek-tree", revision=4,
    pool=0x83484e0) at subversion/libsvn_delta/path_driver.c:66
#3 0xf7bbdf0c in svn_delta_path_driver (editor=0x8328fe8,
    edit_baton=0x83285c8, revision=4, paths=0x8348518,
    callback_func=0xf7dbe400 <svn_swig_py_delta_path_driver_cb_func>,
    callback_baton=0xf76eee64, pool=0x83484e0)
    at subversion/libsvn_delta/path_driver.c:230
#4 0xf7aa672b in _wrap_svn_delta_path_driver (self=0x0, args=0xf7876efc)
    at subversion/bindings/swig/python/svn_delta.c:4960
#5 0x0805946c in PyObject_Call ()
#6 0x080b0583 in PyEval_CallObjectWithKeywords ()
#7 0x080a8f3d in ?? ()
#8 0xf7d44f2c in ?? ()
#9 0xf7876efc in ?? ()
#10 0x00000000 in ?? ()

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-05-16 21:06:02 CEST

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