0

我刚刚在我的 Fedora 机器上通过 sqlite 设置了 trac 0.12.2,并且 trac 通过 Web 浏览器和命令行运行良好。我的问题是实现 svn 钩子,其中 post-commit 钩子在运行此命令时因分段错误而死:

/usr/bin/trac-admin /var/trac/myproject changeset added "$1" "$2"

其中 $1 是本地文件系统上的 svn 存储库路径,$2 是修订版。

这个命令的输出是这样的:

/path/to/svn/hooks/post-commit: line 9: 3874 Segmentation fault /usr/bin/trac-admin /var/trac/myproject changeset added "$1" "$2"

我将如何调试这个?有谁知道为什么在全新安装时会发生这种情况(我没有升级,它很干净)?

我对运行此命令的用户进行了一些基本检查,即apache. 我还尝试运行此命令apache以查看它是否会失败,但这只能从命令行中找到:

sudo -u apache /usr/bin/trac-admin /var/trac/ujaweb changeset added /path/to/svn/repo 750

我在这里有点没有想法。有谁知道为什么会发生这种情况?

以下是一些有用的信息:

Linux:Linux hostname.com 2.6.18-028stab069.5 #1 SMP 5 月 18 日星期二 17:26:16 MSD 2010 x86_64 x86_64 x86_64 GNU/Linux
Apache:2.2.17 w/ mod_wsgi
Python:2.6.4
Trac:0.12.2 (通过带有 mod_wsgi 的 Apache)

4

2 回答 2

1

您可以尝试在trac-admin下运行strace,并保存输出:

/usr/bin/strace -o /var/trac/myproject/log/trace.log /usr/bin/trac-admin /var/trac/myproject changeset added "$1" "$2"

然后,查看生成的登录信息/var/trac/myproject/log/trace.log

另一种选择是让您的系统生成核心转储(您可能必须在您的/etc/limits和/或中启用它/etc/security/limits.conf),然后使用gdb.

于 2011-04-06T13:56:45.933 回答
0

我的第一次尝试是关闭 selinux 一段时间并测试它是否仍然发生。如果不是 - 您必须弄清楚如何配置 selinux 以允许 /proc/mount 由该进程失败并出现分段错误打开。

于 2011-04-06T15:33:29.287 回答