【发布时间】:2015-07-10 21:09:48
【问题描述】:
我有一个使用 PHP 的 exec() 函数由 Web 应用程序执行的自定义程序(例如 myexe)。使用 PHP CLI 运行时它不会失败,当我作为用户从命令行运行时 myexe 也不会失败。我已经构建了 myexe,以便在使用 valgrind 进行分析时不会出现内存问题。 myexe 的大小约为 26MB。
为了简化情况,我在用户 'apache' 下的命令行上运行了 myexe 并重现了失败。
su -s /bin/sh apache -c "/usr/local/bin/myexe parm1 parm2..."
==> Segmentation fault (core dumped)
但是当我将用户更改为我自己并运行上面相同的命令时,它可以工作。
su -s /bin/sh mike -c "/usr/local/bin/myexe parm1 parm2..."
==> 工作
这是系统日志文件中的错误:
Jul 9 18:26:15 DEVSTN-1 kernel: myexe[27352]: segfault at 7fffa2bf9ff8 ip 0000000000410324 sp 00007fffa2bfa000 error 6 in myexe[400000+5ae000]
Jul 9 18:26:16 DEVSTN-1 abrt[27353]: Saved core dump of pid 27352 (/usr/local/bin/myexe) to /var/spool/abrt/ccpp-2015-07-09-18:26:15-27352 (13631488 bytes)
Jul 9 18:26:16 DEVSTN-1 abrtd: Directory 'ccpp-2015-07-09-18:26:15-27352' creation detected
Jul 9 18:26:17 DEVSTN-1 abrtd: Executable '/usr/local/bin/myexe' doesn't belong to any package and ProcessUnpackaged is set to 'no'
Jul 9 18:26:17 DEVSTN-1 abrtd: 'post-create' on '/var/spool/abrt/ccpp-2015-07-09-18:26:15-27352' exited with 1
Jul 9 18:26:17 DEVSTN-1 abrtd: Deleting problem directory '/var/spool/abrt/ccpp-2015-07-09-18:26:15-27352'
我的配置:
- CentOS6 2.6.32-504.23.4.el6.x86_64
- Apache/2.2.15 (CentOS)
- PHP 版本 5.3.3
假设 PHP 与错误无关,我是否正确? 接下来我该怎么做?
【问题讨论】:
标签: linux apache segmentation-fault exec