首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调试Apache2.4进程

调试Apache2.4进程
EN

Server Fault用户
提问于 2015-08-10 23:45:32
回答 1查看 972关注 0票数 0

以某种方式将mpm_itk从2.2升级到2.4是通过mpm_prefork实现的。这个问题是在我之前的一个线程中讨论的:常数mpm_Apache错误日志中的itk错误 --这导致了"mpm_itk错误“的发生,但是现在我得到了这些核心通知:核心:通知 AH00052:子pid 4597退出信号分段故障(11),有人知道我应该看什么来最终修复这个问题吗?

更新

我设法将一个过程串到了它的分段故障,但无法真正解释它。如能提供任何帮助,将不胜感激:

代码语言:javascript
运行
复制
rt_sigprocmask(SIG_UNBLOCK, [PROF], NULL, 8) = 0
getcwd("/", 4095)                       = 2
chdir("/website/public")                = 0
lstat("/website/public/index.php", {st_mode=S_IFREG|0644, st_size=1777, ...}) = 0
lstat("/website/public", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/website", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setitimer(ITIMER_PROF, {it_interval={0, 0}, it_value={30, 0}}, NULL) = 0
fcntl(14, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1, len=1}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR,        si_addr=0x7f5a3d942028} ---
chdir("/etc/apache2")                   = 0
rt_sigaction(SIGSEGV, {SIG_DFL, [], SA_RESTORER|SA_INTERRUPT, 0x7f5a3cd258d0}, {SIG_DFL, [], SA_RESTORER|SA_RESETHAND, 0x7f5a3cd258d0}, 8) = 0
kill(24177, SIGSEGV)                    = 0
rt_sigreturn()                          = 140025556901856
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_USER, si_pid=24177, si_uid=33} ---
+++ killed by SIGSEGV +++
EN

回答 1

Server Fault用户

发布于 2015-08-12 08:15:09

strace命令列出了系统在运行时调用应用程序所做的事情。

如果您不是developer:系统手册文档系统调用的第2节帮助您了解正在发生的事情。

代码语言:javascript
运行
复制
fcntl(14, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1, len=1}) = 0

man 2 fcntl Name fcntl --操作文件描述符int fcntl(int fd, int cmd, ... /* arg */ ); Description fcntl()在打开的文件描述符fd上执行下面描述的操作之一。该操作由cmd. fcntl()确定,可以采用可选的第三个参数。是否需要此参数由cmd决定。所需的参数类型在每个cmd名称之后的括号中表示(在大多数情况下,所需的类型是int,我们使用名称arg标识参数),如果不需要参数,则指定void。..。

换句话说:试图对文件描述符14进行读锁。要找出哪个文件应该与数字14有符号链接,在/proc/<PID>/fd/14中表示该文件的整数。

在我看来,这与下一行的错误无关,但我不是开发人员.:

代码语言:javascript
运行
复制
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x7f5a3d942028} ---

si_signo=SIGSEGV看起来像是您监视的进程接收到了访问无效内存地址0x7f5a3d942028所导致的分段错误(SIGSEGV)信号,该地址是不允许访问的( SEGV_ACCERR si_code)。

至于为什么会发生这种情况:strace通常不太可能帮助您。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/713203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档