Статус: Участник
Группы: Участники
Зарегистрирован: 18.07.2017(UTC) Сообщений: 13 Откуда: Краснодар Сказал(а) «Спасибо»: 2 раз Поблагодарили: 2 раз в 2 постах
|
Добрый день Встретился с той же проблемой. Только на функции VerifyHash. Php 5.6 валится в Segmentation fault. При этом если создаю подпись хеша сам тестовым сертификатом проходит все хорошо. Код:
strace -o strc.txt -ff php5.6 index.php
По логу strace нашол следующий момент:
Код:
uname({sysname="Linux", nodename="errorpc", ...}) = 0
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 18
connect(18, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, 16) = 0
poll([{fd=18, events=POLLOUT}], 1, 0) = 1 ([{fd=18, revents=POLLOUT}])
sendmmsg(18, {{{msg_name(0)=NULL, msg_iov(1)=[{"\323\177\1\0\0\1\0\0\0\0\0\0\nrostelecom\2ru\0\0\1\0\1", 31}], msg_controllen=0, msg_flags=MSG_DONTROUTE|MSG_TRUNC|MSG_EOR|MSG_WAITALL|MSG_SYN|MSG_CONFIRM|MSG_RST|MSG_ERRQUEUE|MSG_NOSIGNAL|MSG_MORE|MSG_CMSG_CLOEXEC|0x84ca0010}, 31}, {{msg_name(0)=NULL, msg_iov(1)=[{"\227\314\1\0\0\1\0\0\0\0\0\0\nrostelecom\2ru\0\0\34\0\1", 31}], msg_controllen=0, msg_flags=MSG_OOB|MSG_DONTROUTE|MSG_CTRUNC|0x10}, 31}}, 2, MSG_NOSIGNAL) = 2
poll([{fd=18, events=POLLIN}], 1, 5000) = 1 ([{fd=18, revents=POLLIN}])
ioctl(18, FIONREAD, [186]) = 0
recvfrom(18, "\323\177\201\200\0\1\0\1\0\3\0\3\nrostelecom\2ru\0\0\1\0\1\n"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, [16]) = 186
poll([{fd=18, events=POLLIN}], 1, 4979) = 1 ([{fd=18, revents=POLLIN}])
ioctl(18, FIONREAD, [78]) = 0
recvfrom(18, "\227\314\201\200\0\1\0\0\0\1\0\0\nrostelecom\2ru\0\0\34\0\1\300"..., 65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, [16]) = 78
close(18) = 0
alarm(0) = 30
rt_sigaction(SIGALRM, {SIG_DFL, [], SA_RESTORER, 0x7fab14d394b0}, NULL, 8) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 18
fcntl(18, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(18, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(18, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("109.207.14.3")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=18, events=POLLOUT}], 1, 1000) = 1 ([{fd=18, revents=POLLOUT}])
getsockopt(18, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getpeername(18, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("109.207.14.3")}, [16]) = 0
getsockname(18, {sa_family=AF_INET, sin_port=htons(33094), sin_addr=inet_addr("192.168.88.74")}, [16]) = 0
sendto(18, "GET /cdp/vguc1_4.crt HTTP/1.1\r\nU"..., 119, MSG_NOSIGNAL, NULL, 0) = 119
poll([{fd=18, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
poll([{fd=18, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
poll([{fd=18, events=POLLIN|POLLPRI}], 1, 1000) = 1 ([{fd=18, revents=POLLIN}])
poll([{fd=18, events=POLLIN|POLLPRI}], 1, 0) = 1 ([{fd=18, revents=POLLIN}])
recvfrom(18, "HTTP/1.1 301 Moved Permanently\r\n"..., 16384, 0, NULL, NULL) = 387
recvfrom(18, NULL, 0, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=18, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
rt_sigaction(SIGALRM, NULL, {SIG_DFL, [], SA_RESTORER, 0x7fab14d394b0}, 8) = 0
rt_sigaction(SIGALRM, {0x7fab00e6a860, [], SA_RESTORER, 0x7fab14d394b0}, NULL, 8) = 0
alarm(29) = 0
rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 19
close(19) = 0
stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=172, ...}) = 0
open("/etc/hosts", O_RDONLY|O_CLOEXEC) = 19
fstat(19, {st_mode=S_IFREG|0644, st_size=343, ...}) = 0
read(19, "127.0.0.1\tlocalhost test.lan gla"..., 4096) = 343
read(19, "", 4096) = 0
close(19) = 0
stat("/etc/resolv.conf", {st_mode=S_IFREG|0644, st_size=172, ...}) = 0
socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 19
connect(19, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, 16) = 0
poll([{fd=19, events=POLLOUT}], 1, 0) = 1 ([{fd=19, revents=POLLOUT}])
sendmmsg(19, {{{msg_name(0)=NULL, msg_iov(1)=[{"\303o\1\0\0\1\0\0\0\0\0\0\3www\nrostelecom\2ru\0\0"..., 35}], msg_controllen=0, msg_flags=MSG_DONTROUTE|MSG_TRUNC|MSG_EOR|MSG_WAITALL|MSG_SYN|MSG_CONFIRM|MSG_RST|MSG_ERRQUEUE|MSG_NOSIGNAL|MSG_MORE|MSG_CMSG_CLOEXEC|0x84ca0010}, 35}, {{msg_name(0)=NULL, msg_iov(1)=[{"u9\1\0\0\1\0\0\0\0\0\0\3www\nrostelecom\2ru\0\0"..., 35}], msg_controllen=0, msg_flags=MSG_OOB|MSG_DONTROUTE|MSG_CTRUNC|0x10}, 35}}, 2, MSG_NOSIGNAL) = 2
poll([{fd=19, events=POLLIN}], 1, 5000) = 1 ([{fd=19, revents=POLLIN}])
ioctl(19, FIONREAD, [194]) = 0
recvfrom(19, "\303o\201\200\0\1\0\1\0\3\0\3\3www\nrostelecom\2ru\0\0"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, [16]) = 194
poll([{fd=19, events=POLLIN}], 1, 4995) = 1 ([{fd=19, revents=POLLIN}])
ioctl(19, FIONREAD, [82]) = 0
recvfrom(19, "u9\201\200\0\1\0\0\0\1\0\0\3www\nrostelecom\2ru\0\0"..., 65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.1.1")}, [16]) = 82
close(19) = 0
alarm(0) = 29
rt_sigaction(SIGALRM, {SIG_DFL, [], SA_RESTORER, 0x7fab14d394b0}, NULL, 8) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 19
fcntl(19, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(19, F_SETFL, O_RDWR|O_NONBLOCK) = 0
connect(19, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("109.207.14.3")}, 16) = -1 EINPROGRESS (Operation now in progress)
poll([{fd=19, events=POLLOUT}], 1, 1000) = 1 ([{fd=19, revents=POLLOUT}])
getsockopt(19, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getpeername(19, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("109.207.14.3")}, [16]) = 0
getsockname(19, {sa_family=AF_INET, sin_port=htons(32852), sin_addr=inet_addr("192.168.88.74")}, [16]) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x18} ---
+++ killed by SIGSEGV (core dumped) +++
Если кратко и как я понимаю) Cprocsp пытается с помощью libcurl загрузить файл rostelecom.ru/cdp/vguc1_4.crt при этом почему-то транслирует днс IP и делает запрос именно на ип 109.207.14.3/cdp/vguc1_4.crt. И получает в ответ 301 редикрет (на https://www.rostelecom.ru/projects/IIoT/IIoT.php).Далее не совсем понятно. Получается она либо не может обработать редирект и запрашивает заного и на этом крашится либо пытается обработать редирект. 192.168.88.74 IP локальной машины. Подменив ДНС запись в файле hosts rostelecom.ru => 127.0.0.1 и настрооим локальный веб сервер на отдачу файлика /cdp/vguc1_4.crt проверка начала успешно проходить. Собственно скорее всего проблема в libcurl и обработке редиректов.
|