Hi,
I experienced a segfault when trying to resolve a conflict while updating:
Conflict discovered in 'somefile'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: l
Process '/path/to/shell-script/merge-cmd' failed (exitwhy 6)
Further debugging revealed that a child process of svn segfaults and that this
happens because of misuse of apr_pool_cleanup_register. That function does not
accept null helpers. I've grepped the svn repo and the kwallet auth code is
the only place where this error occurs.
Please see the attached patch, it was based on r1421011 and tested by applying
it on top of 1.7.7.
Regards,
Peter
Index: subversion/libsvn_auth_kwallet/kwallet.cpp
===================================================================
--- subversion/libsvn_auth_kwallet/kwallet.cpp (revision 1421011)
+++ subversion/libsvn_auth_kwallet/kwallet.cpp (working copy)
@@ -253,7 +253,7 @@ kwallet_password_get(svn_boolean_t *done,
}
}
- apr_pool_cleanup_register(pool, parameters, kwallet_terminate, NULL);
+ apr_pool_cleanup_register(pool, parameters, kwallet_terminate, apr_pool_cleanup_null);
return SVN_NO_ERROR;
}
@@ -327,7 +327,7 @@ kwallet_password_set(svn_boolean_t *done,
}
}
- apr_pool_cleanup_register(pool, parameters, kwallet_terminate, NULL);
+ apr_pool_cleanup_register(pool, parameters, kwallet_terminate, apr_pool_cleanup_null);
return SVN_NO_ERROR;
}