forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.HUSKY

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 03.10.2022, 13:12
Ruslan Suleimanov
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Ruslan Suleimanov написал(а) к All в Oct 22 11:51:35 по местному времени:

Привет, All!




С периодичностью раз в день появляется сабж, собирался с github через git clone с параметрами поумолчанию + perl hooks,
OS FreeBSD 13.1. Файл core сохранил. Что может быть ?





WBR Ruslan Suleimanov


... Добре роби - добре буде.
--- rsync://ip.fido.odessa.ua/FIDO/
Ответить с цитированием
  #2  
Старый 03.10.2022, 15:22
Pavel Gulchouck
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Pavel Gulchouck написал(а) к Ruslan Suleimanov в Oct 22 14:08:42 по местному времени:

Нi Ruslan!

03 Oct 22, Ruslan Suleimanov ==> All:

RS> С периодичностью раз в день появляется сабж, собирался с github через git clone с параметрами поумолчанию + perl hooks,
RS> OS FreeBSD 13.1. Файл core сохранил. Что может быть ?

Запусти "gdb `which hpt` hpt.core" и покажи, что расскажет "backtrace".
Btw какая версия hpt и на какой команде падает?

Lucky carrier,
Паша
aka gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5-b20160827
Ответить с цитированием
  #3  
Старый 03.10.2022, 16:42
Ruslan Suleimanov
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Ruslan Suleimanov написал(а) к Pavel Gulchouck в Oct 22 15:07:13 по местному времени:

Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 03 окт 22 в 14:08:

PG> 03 Oct 22, Ruslan Suleimanov ==> All:

RS>> С периодичностью раз в день появляется сабж, собирался с github через
RS>> git clone с параметрами поумолчанию + perl hooks, OS FreeBSD 13.1.
RS>> Файл core сохранил. Что может быть ?

PG> Запусти "gdb `which hpt` hpt.core" и покажи, что расскажет "backtrace".
PG> Btw какая версия hpt и на какой команде падает?


я так понял ошибка происходит иногда при вызове из perl скрипта по команде
exec: hpt post ...
Но при этом в командной строке никогда подобного не наблюдал..

-----

[tank@fidonet /mnt/fido/zone2/husky]$ hpt
hpt/fbsd 1.9 2022-07-03


-----

[tank@fidonet /mnt/fido/zone2/husky/errors]$ gdb `which hpt` hpt.core
GNU gdb (GDB) 12.1 [GDB v12.1 for FreeBSD]
Copyright (C) 2022 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-portbld-freebsd13.1".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://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"...
Reading symbols from /usr/local/bin/hpt...
(No debugging symbols found in /usr/local/bin/hpt)
[New LWP 100526]

warning: Could not load shared library symbols for [vdso].
Do you need "set solib-search-path" or "set sysroot"?
Core was generated by `hpt -c /mnt/fido/zone2/husky/config post -af 2:467/888 -nf Robocop Servinfo -s '.
Program terminated with signal SIGBUS, Bus error.
Object-specific hardware error.
#0 0x00000000002549b6 in closeOpenedPkt ()
----

[tank@fidonet /mnt/fido/zone2/husky]$ pkg search backtrace
libbacktrace-1.0 C library that produces symbolic backtraces in C/C++ programs

----

[tank@fidonet /mnt/fido/zone2/husky/errors]$ ddb capture -M hpt.core print
ddb: ddbcapture: kvmopenfiles: cannot read KPML4phys
[tank@fidonet /mnt/fido/zone2/husky/errors]$ ddb capture -M hpt.core status
ddb: ddbcapture: kvmopenfiles: cannot read KPML4phys







WBR Ruslan Suleimanov


... Фашисты современности будут называть себя антифашистами.
--- rsync://ip.fido.odessa.ua/FIDO/
Ответить с цитированием
  #4  
Старый 06.10.2022, 00:05
Pavel Gulchouck
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Pavel Gulchouck написал(а) к Ruslan Suleimanov в Oct 22 22:26:34 по местному времени:

Нi Ruslan!

03 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

RS>>> С периодичностью раз в день появляется сабж, собирался с github через
RS>>> git clone с параметрами поумолчанию + perl hooks, OS FreeBSD 13.1.
RS>>> Файл core сохранил. Что может быть ?

PG>> Запусти "gdb `which hpt` hpt.core" и покажи, что расскажет "backtrace".

"backtrace" - это команда в gdb command-line, не в shell.

PG>> Btw какая версия hpt и на какой команде падает?

RS> я так понял ошибка происходит иногда при вызове из perl скрипта по команде
RS> exec: hpt post ...
RS> Но при этом в командной строке никогда подобного не наблюдал..

Покажи, как именно он запускается из перла.
Ошибка воспроизводится или при запуске с одинаковыми параметрами иногда отрабатывает корректно, а иногда падает?

Lucky carrier,
Паша
aka gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5-b20160827
Ответить с цитированием
  #5  
Старый 06.10.2022, 18:23
Ruslan Suleimanov
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Ruslan Suleimanov написал(а) к Pavel Gulchouck в Oct 22 17:08:31 по местному времени:

Привет, Pavel!



Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 05 окт 22 в 22:26:


PG> 03 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

RS>>>> С периодичностью раз в день появляется сабж, собирался с github
RS>>>> через git clone с параметрами поумолчанию + perl hooks, OS FreeBSD
RS>>>> 13.1. Файл core сохранил. Что может быть ?

PG>>> Запусти "gdb `which hpt` hpt.core" и покажи, что расскажет
PG>>> "backtrace".

PG> "backtrace" - это команда в gdb command-line, не в shell.


(gdb) backtrace
#0 0x00000000002549b6 in closeOpenedPkt ()
#1 0x0000000000258fa6 in arcmail ()
#2 0x0000000000256a71 in tossTempOutbound ()
#3 0x0000000000235bd7 in main ()


PG>>> Btw какая версия hpt и на какой команде падает?

RS>> я так понял ошибка происходит иногда при вызове из perl скрипта по
RS>> команде
RS>> exec: hpt post ...
RS>> Но при этом в командной строке никогда подобного не наблюдал..

PG> Покажи, как именно он запускается из перла.

open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... -") || die "error message: $!";
close(FROMK);


PG> Ошибка воспроизводится или при запуске с одинаковыми параметрами иногда
PG> отрабатывает корректно, а иногда падает?

да, именно, иногда корректно, а иногда падает. Но сабж для hpt post скармливается разный, и тело сообщения разное.






WBR Ruslan Suleimanov


... Фашисты современности будут называть себя антифашистами.
--- rsync://ip.fido.odessa.ua/FIDO/
Ответить с цитированием
  #6  
Старый 07.10.2022, 13:51
Pavel Gulchouck
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Pavel Gulchouck написал(а) к Ruslan Suleimanov в Oct 22 12:19:52 по местному времени:

Нi Ruslan!

06 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

PG>> Покажи, как именно он запускается из перла.

RS> open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... -")
RS> || die "error message: $!";
RS> close(FROMK);

Тут много странного.
У open() второй параметр "-|", что предполагает третий аргумент как процесс, для которого stdout перенаправляется в FROMK. Но третий параметр не передаётся, от undef. Вариант undef как третий параметр используется для unnamed tempfile, но это в случае "+>", а в твоём случае я не понимаю, что произойдёт и что имелось ввиду, поясни.

Кстати, для filehandle рекомендуют использовать обычные переменные, а не glob, т.е. "open(my $fromk, ...)" вместо устаревшего варианта "open(FROMK, ...)".

Потом, exec() выполняется только если этот open() не был успешен. Немного странная логика, ну да ладно.
Наверное, ты знаешь, что exec() заменяет текущий процесс запускаемым, т.е. возврата после успешного exec() не происходит (если нужен возврат и продолжение работы скрипта, то вместо exec() надо использовать system()).

Зачем вызывать в варианте "cat 1.txt | hpt post ... -" вместо "hpt post ... 1.txt"? Не исключаю, что hpt может плохо работать с пайпом на stdin - не ожидать, что данные ещё не готовы и их прочитано меньше, чем запрошено. Кроме того, передавать файл параметром эффективнее: в этом случае не нужно будет запускать дополнительный процесс cat и, скорее всего, shell.

hpt, конечно, всё равно не должен падать по segfault, но для начала имеет смысл привести к более понятному виду его запуск.

Lucky carrier,
Паша
aka gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5-b20160827
Ответить с цитированием
  #7  
Старый 07.10.2022, 13:51
Pavel Gulchouck
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Pavel Gulchouck написал(а) к Ruslan Suleimanov в Oct 22 12:41:52 по местному времени:

Нi Ruslan!

06 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

PG>> Ошибка воспроизводится или при запуске с одинаковыми параметрами иногда
PG>> отрабатывает корректно, а иногда падает?

RS> да, именно, иногда корректно, а иногда падает. Но сабж для hpt post скармливается разный, и тело сообщения разное.

А при повторном запуске после падения с теми же параметрами, с которыми упало, может отработать корректно?

Lucky carrier,
Паша
aka gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5-b20160827
Ответить с цитированием
  #8  
Старый 08.10.2022, 00:32
Ruslan Suleimanov
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Ruslan Suleimanov написал(а) к Pavel Gulchouck в Oct 22 23:24:25 по местному времени:



Привет, Pavel!



Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 07 окт 22 в 12:41:


PG> 06 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

PG>>> Ошибка воспроизводится или при запуске с одинаковыми параметрами
PG>>> иногда отрабатывает корректно, а иногда падает?

RS>> да, именно, иногда корректно, а иногда падает. Но сабж для hpt post
RS>> скармливается разный, и тело сообщения разное.

PG> А при повторном запуске после падения с теми же параметрами, с которыми
PG> упало, может отработать корректно?

вот єтого я незнаю, так как всегда разный текст, как проверить незнаю,
развечто выловить тот текст на котором падает и попробовать снова скормить.





WBR Ruslan Suleimanov


... Идите домой. Водки нет! Go home, no vodka!
--- rsync://ip.fido.odessa.ua/FIDO/
Ответить с цитированием
  #9  
Старый 08.10.2022, 01:14
Ruslan Suleimanov
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Ruslan Suleimanov написал(а) к Pavel Gulchouck в Oct 22 23:28:14 по местному времени:

Привет, Pavel!



Ответ на сообщение Pavel Gulchouck (2:463/68) к Ruslan Suleimanov, написанное 07 окт 22 в 12:19:



PG> Нi Ruslan!

PG> 06 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

PG>>> Покажи, как именно он запускается из перла.

RS>> open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c
RS>> /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... -")
RS>> || die "error message: $!";
RS>> close(FROMK);

PG> Тут много странного.
PG> У open() второй параметр "-|", что предполагает третий аргумент как
PG> процесс, для которого stdout перенаправляется в FROMK. Но третий параметр
PG> не передаётся, от undef. Вариант undef как третий параметр используется для
PG> unnamed tempfile, но это в случае "+>", а в твоём случае я не понимаю, что
PG> произойдёт и что имелось ввиду, поясни.


тут я открываю канал без опаски перехвата интерпретатором команд моих аргументов
которые могут изменятся.
тоесть потом просто читается из FROMK в родительском процессе.


PG> Кстати, для filehandle рекомендуют использовать обычные переменные, а не
PG> glob, т.е. "open(my $fromk, ...)" вместо устаревшего варианта "open(FROMK,
PG> ...)".

ок, спасибо, перепишу скрипт.

PG> Потом, exec() выполняется только если этот open() не был успешен. Немного
PG> странная логика, ну да ладно. Наверное, ты знаешь, что exec() заменяет
PG> текущий процесс запускаемым, т.е. возврата после успешного exec() не
PG> происходит (если нужен возврат и продолжение работы скрипта, то вместо
PG> exec() надо использовать system()).
PG> Зачем вызывать в варианте "cat 1.txt | hpt post ... -" вместо "hpt
PG> post ...
PG> 1.txt"?

а как можно безопасно вызвать чтобы динамичные аргументы не подставлялись в командах ?
через system() ?

PG> Не исключаю, что hpt может плохо работать с пайпом на stdin - не
PG> ожидать, что данные ещё не готовы и их прочитано меньше, чем
PG> запрошено.
PG> Кроме того, передавать файл параметром эффективнее: в этом случае не
PG> нужно
PG> будет запускать дополнительный процесс cat и, скорее всего, shell.
PG> hpt, конечно, всё равно не должен падать по segfault, но для начала
PG> имеет
PG> смысл привести к более понятному виду его запуск.

ок понял, попробую через system() и профильтровать динамические аргументы,
послежу за поведением, спасибо.




WBR Ruslan Suleimanov


"Спершу ти називаэш українцiв салоїдами, а потiм тебе в полi доїдає українська
свиня. В карми все ок з iронiєю."(c) Селфiя Iгорiвна

... Наши мысли, определяют наше будущее.
--- rsync://ip.fido.odessa.ua/FIDO/
Ответить с цитированием
  #10  
Старый 08.10.2022, 12:41
Pavel Gulchouck
Guest
 
Сообщений: n/a
По умолчанию hpt.core

Pavel Gulchouck написал(а) к Ruslan Suleimanov в Oct 22 11:00:46 по местному времени:

Нi Ruslan!

07 Oct 22, Ruslan Suleimanov ==> Pavel Gulchouck:

PG>>>> Покажи, как именно он запускается из перла.

RS>>> open(FROMK,"-|") || exec("cat /mnt/fido/CODE/db/1.txt | hpt -c
RS>>> /mnt/fido/zone2/husky/config post -af '2:467/888' -nf '.....' ... -")
RS>>> || die "error message: $!";
RS>>> close(FROMK);

PG>> Тут много странного.
PG>> У open() второй параметр "-|", что предполагает третий аргумент как
PG>> процесс, для которого stdout перенаправляется в FROMK. Но третий параметр
PG>> не передаётся, от undef. Вариант undef как третий параметр используется для
PG>> unnamed tempfile, но это в случае "+>", а в твоём случае я не понимаю, что
PG>> произойдёт и что имелось ввиду, поясни.

RS> тут я открываю канал без опаски перехвата интерпретатором команд моих аргументов
RS> которые могут изменятся.
RS> тоесть потом просто читается из FROMK в родительском процессе.

Ты хочешь, чтобы, если в параметрах, которые ты подставляешь из переменных, встретились метасимволы ("'", "$"), то они не были интерпретированны шеллом?
Открытый пайп FROMK (а на самом деле не открытый, иначе exec не выполнится) тут не поможет.
Запускай hpt через exec() (если возврат не нужен) или через system (если нужен), передавая не командную строку, а список аргументов без всяких перенаправлений, тогда он будет выполнен без shell.
Текст поста ты предварительно пишешь в 1.txt? Тогда просто передавай этот 1.txt параметром.
А если хочешь через пайп, тогда
open my $openk, "|-", "hpt post -nf '$from' ... -";
и потом в $openk пиши текст поста, без создания 1.txt. Но тогда нужно самостоятельно проверить, чтобы в параметрах не встретились одинарные кавычки.
Ещё вариант, чтобы использовать пайп без запуска шелла - руками сделать редирект stdout на пайп, потом запустить hpt, и потом писать в пайп.
Или использовать IPC::Open3.

В твоём случае я бы предложил не усложнять, т.е. не использовать пайп, а запускать через system() со списком параметров, а текст брать из файла 1.txt.

RS> а как можно безопасно вызвать чтобы динамичные аргументы не подставлялись в командах ?
RS> через system() ?

Можно через system(), можно через exec(), можно предварительно экранировать метасимволы.

Lucky carrier,
Паша
aka gul@gul.kiev.ua
--- GoldED+/LNX 1.1.5-b20160827
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 04:57. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot