【发布时间】:2014-12-09 22:05:33
【问题描述】:
升级到 Yosemite 后,svn 在我的 Mac 中停止工作。我知道有一个非常相似的问题没有答案, Segmentation fault: 11 in SVN checkout,但是我花了一整天的时间来处理这个问题,我正在添加更多关于这个问题的信息。我希望有人也许有人可以提供帮助......我真的被困住了。我无法升级svn,我打算回到小牛队。
我得到的错误:
svn update
Segmentation fault: 11
我已经在自己编译的二进制文件中使用 svn(虽然对 C 不太熟悉)。几个月前,Xcode 的更新删除了旧的 svn 1.6。
这次使用优胜美地,当我尝试再次编译它时,我发现操作系统更新已修改 apache 和 APR 并且源不再编译(或者至少这是我的猜测我得到的错误):
/bin/sh /mnt/netzima/icaria/apps/subversion-1.6.6/libtool --tag=CC --silent --mode=compile gcc -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -g -O2 -I/usr/include/apache2 -I./subversion/include -I./subversion -I/usr/local/apr/include/apr-1 -I/usr/local/apr-util/include/apr-1 -I/opt/local/include/neon -o subversion/mod_authz_svn/mod_authz_svn.lo -c subversion/mod_authz_svn/mod_authz_svn.c
subversion/mod_authz_svn/mod_authz_svn.c:448:9: error: member reference base type 'char' is not a structure or union
ap_log_rerror(file, line, level, 0, r,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
我已经下载并make install以下内容:
- libtool 版本 2.4.2
- autoconf 版本 2.69
- automake 1.14 版
- 4 月版本 1.3.12
- apr-util 版本 1.3.12
- apache 2.2.29 版
我希望这些版本与 svn 1.6.6 兼容,因为正如我之前提到的,我的猜测是它不再与最新版本兼容。
如果要使用我下载的那些包,我必须在配置命令中添加选项。对于 apr-util,我必须这样配置:
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
至于阿帕奇:
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --prefix=/usr/local/apache2 --enable-dav --enable-so
最后是svn:
./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-apxs=/usr/local/apache2/bin/apxs --enable-maintainer-mode
这种方式至少 svn 编译(我想这证明它得到了正确的版本)。但它不起作用,我得到了同样的分段错误。我已经将 /usr/local/... 目录添加到我的路径中以确保,虽然我猜 svn 将它需要的所有库放在一个可访问的目录中(我认为它是 /usr/local/bin,这已经在我的路径中)。
我不知道从这里怎么走。我尝试使用调试进行编译以查看是否可以获得指向分段错误、核心转储或类似内容的指针,但没有成功...
任何帮助将不胜感激! 无论如何,谢谢。
编辑:
根据@indiv 的建议,这是 otool 的输出:
/usr/local/bin/svn:
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57031.1.35)
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1151.16.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 62.0.0)
/usr/local/lib/libsvn_client-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_wc-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_ra-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_diff-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_ra_local-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_repos-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_fs-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_fs_fs-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_fs_util-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_ra_svn-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libsasl2.2.dylib (compatibility version 3.0.0, current version 3.15.0)
/usr/local/lib/libsvn_ra_neon-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_delta-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsvn_subr-1.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/opt/local/lib/libsqlite3.0.dylib (compatibility version 9.0.0, current version 9.6.0)
/usr/local/apr-util/lib/libaprutil-1.0.dylib (compatibility version 4.0.0, current version 4.12.0)
/usr/local/apr/lib/libapr-1.0.dylib (compatibility version 4.0.0, current version 4.12.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
/opt/local/lib/libneon.27.dylib (compatibility version 30.0.0, current version 30.6.0)
/opt/local/lib/libiconv.2.dylib (compatibility version 8.0.0, current version 8.1.0)
/opt/local/lib/libintl.8.dylib (compatibility version 10.0.0, current version 10.2.0)
/opt/local/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/opt/local/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
/opt/local/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos (compatibility version 5.0.0, current version 6.0.0)
/opt/local/lib/libexpat.1.dylib (compatibility version 8.0.0, current version 8.0.0)
【问题讨论】:
-
我认为你在正确的轨道上,它是导致崩溃的不兼容库。运行
which svn以验证您正在运行正确的 SVN。将otool -L /usr/local/bin/svn的输出添加到您的问题中,以提供有关库依赖项的其他调试信息。 -
谢谢@indiv!我猜这是它使用的库列表。但是如何弄清楚其他事情呢? (只是仔细检查了哪个 svn)
-
有些东西odd about Yosemite's libsasl。我想知道这是否导致了这个问题。我从未构建过 SVN 1.6;该版本是否支持
--without-sasl?如果是这样,您可以尝试使用该选项重新配置、重建和重新安装。 -
否则,如果您想继续调试您的 SVN 安装,您将需要使用调试符号 (
CFLAGS=-g) 重新构建并在lldb下运行它。即lldb svn update,一旦进入调试器,输入“r”进行运行。如果它与“exec”的停止原因中断,则为“c”。当它崩溃时,你应该得到一个堆栈跟踪。恐怕这只是我能提供的帮助的极限,所以祝你好运。如果是我,我会尝试 SVN 1.8.x。我不知道为什么必须坚持使用 1.6.x,除了我想尝试将 cmdline svn 与某些 IDE 插件的 svn 匹配。 -
是的,@indiv,svn 1.6 有 sasl 作为可选依赖项。它确实支持 --withot-sasl。但是,分段错误仍然存在......我已经运行了“otool ...”并且 sasl 库不再存在。明天我会尝试调试(现在去睡觉,这是漫长的一天!)让我们看看我是否幸运,我会告诉你。 ( ./configure 命令有一个 --enable-debug 选项,我会检查这是否添加了您提到的 CFLAGS)。非常感谢!
标签: c apache svn osx-yosemite apr