2017-01-06 11 views
0

Я бегу головой к стене на этом.Ошибка сегментации Apache2, вызванная настраиваемым php-модулем

Для одного из моих проектов php я использую модуль php, который позволяет выполнять некоторые астрономические вычисления с использованием швейцарских эфемерид. От этого зависят будущие процессы развития. Поэтому мне нужно заставить его работать в php7. Этот php-модуль предоставляет функции c из швейцарских эфемерид (библиотека с планетными позициями) для включения в php с использованием модуля.

Источник этого модуля PHP можно найти более here

Когда compilling этого модуля php5 и убунт 14,04 это работает отлично, но когда я compilling этого модуля для php7 и убунт 16,04.

Я получаю ошибки при компиляции, как этот:

/home/hermes/Bureaublad/php-sweph-master/sweph.c:1098:2: error: 
‘RETURN_STRING’ undeclared (first use in this function) 
RETURN_STRING(name, 1); 

После нескольких проб и ошибок, я сделал выяснить, есть один параметр Я многие в этой функции, потому что нечто было изменено в php7. После удаления параметра «, 1» в довольно много функций. Наконец, я получил компиляцию модуля, и он работает нормально, но не все функции работают правильно.

Существует множество функций, которые вызывают ошибку ошибки сегментации apache2 (11). В то же время другая функция работает отлично.

Таким образом, после некоторого чтения я начал отладки apache2, чтобы выяснить, что является причиной ошибки сегментации, но с этого момента, все Dont никакого смысла ...

Я после этого руководства: "[notice] child pid XXXX exit signal Segmentation fault (11)" in apache error.log

GDB возвращает это, но я не вижу, как это не имеет ничего общего с моей PHP модуль, который вызывает ошибку ..

gdb attach 19966 
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1 
Copyright (C) 2016 Free Software Foundation, Inc. 
License GPLv3+: GNU GPL version 3 or later  
<http://gnu.org/licenses/gpl.html> 
This is free software: you are free to change and redistribute it. 
There is NO WARRANTY, to the extent permitted by law. Type "show  
copying" 
and "show warranty" for details. 
This GDB was configured as "x86_64-linux-gnu". 
Type "show configuration" for configuration details. 
For bug reporting instructions, please see: 
<http://www.gnu.org/software/gdb/bugs/>. 
Find the GDB manual and other documentation resources online at: 
<http://www.gnu.org/software/gdb/documentation/>. 
For help, type "help". 
Type "apropos word" to search for commands related to "word"... 
attach: Bestand of map bestaat niet. 
Attaching to process 19966 
Reading symbols from /bin/bash...(no debugging symbols found)...done. 
Reading symbols from /lib/x86_64-linux-gnu/libtinfo.so.5...(no  
debugging symbols found)...done. 
Reading symbols from /lib/x86_64-linux-gnu/libdl.so.2...Reading 
symbols from /usr/lib/debug//lib/x86_64-linux-gnu/libdl-2.23.so...done. 
done. 
Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...Reading 
symbols from /usr/lib/debug//lib/x86_64-linux-gnu/libc- 
2.23.so...done. 
done. 
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols 
from /usr/lib/debug//lib/x86_64-linux-gnu/ld-2.23.so...done. 
done. 
Reading symbols from /lib/x86_64-linux- 
gnu/libnss_compat.so.2...Reading symbols from 
/usr/lib/debug//lib/x86_64-linux-gnu/libnss_compat-2.23.so...done. 
done. 
Reading symbols from /lib/x86_64-linux-gnu/libnsl.so.1...Reading 
symbols from /usr/lib/debug//lib/x86_64-linux-gnu/libnsl- 
2.23.so...done. 
done. 
Reading symbols from /lib/x86_64-linux-gnu/libnss_nis.so.2...Reading 
symbols from /usr/lib/debug//lib/x86_64-linux-gnu/libnss_nis- 
2.23.so...done. 
done. 
Reading symbols from /lib/x86_64-linux- 
gnu/libnss_files.so.2...Reading symbols from 
/usr/lib/debug//lib/x86_64-linux-gnu/libnss_files-2.23.so...done. 
done. 
0x00007fdc29a1f4ca in __GI___waitpid (pid=-1, 
stat_loc=0x7ffe86bd85f0, options=10) 
at ../sysdeps/unix/sysv/linux/waitpid.c:29 
29 ../sysdeps/unix/sysv/linux/waitpid.c: Bestand of map bestaat niet. 
(gdb) back 
#0 0x00007fdc29a1f4ca in __GI___waitpid (pid=-1,  
stat_loc=0x7ffe86bd85f0, options=10) 
at ../sysdeps/unix/sysv/linux/waitpid.c:29 
#1 0x0000000000446f5d in ??() 
#2 0x000000000044843b in wait_for() 
#3 0x000000000043842f in execute_command_internal() 
#4 0x000000000043848e in execute_command() 
#5 0x000000000042139e in reader_loop() 
#6 0x000000000041fdb1 in main() 
(gdb) back full 
#0 0x00007fdc29a1f4ca in __GI___waitpid (pid=-1,  
stat_loc=0x7ffe86bd85f0, options=10) 
at ../sysdeps/unix/sysv/linux/waitpid.c:29 
    resultvar = 18446744073709551104 
#1 0x0000000000446f5d in ??() 
No symbol table info available. 
#2 0x000000000044843b in wait_for() 
No symbol table info available. 
#3 0x000000000043842f in execute_command_internal() 
No symbol table info available. 
#4 0x000000000043848e in execute_command() 
No symbol table info available. 
#5 0x000000000042139e in reader_loop() 
No symbol table info available. 
#6 0x000000000041fdb1 in main() 
No symbol table info available. 
(gdb) 

ответ

1
Attaching to process 19966 
Reading symbols from /bin/bash...(no debugging symbols found)...done. 

Похоже, йо u've прикреплен к неправильному номеру pid. А именно, вы подключились к /bin/bash, одному из ваших экземпляров оболочки. Вы хотите подключиться к процессу Apache2. Посмотрите на вывод ps и найдите там свой экземпляр Apache2, как предлагается в "[notice] child pid XXXX exit signal Segmentation fault (11)" in apache error.log.

+0

В конце концов я нашел проблему! Thanx для указания, что я подключил неправильный процесс к gdb. – HermesTrismegistus