есть какой-то workaround?
perl -e 'use Devel::MAT::Dumper' && gdb --batch -ex 'x Perl_eval_pv("use Devel::MAT::Dumper; Devel::MAT::Dumper::dump(\"/tmp/foo.$$.pmat\")", 0)' -p $pid
В некоторых случаях такой код приводит к сегфолту
Не томи. Рассказывай - в каких.
Ну для начала, когда перл не пандовый, а любой другой
Странно... Не знал что есть пандовый перл.
Короче этот код упадет в сегфолт у 30% ответивших :р
надо было вопрос так задавать: "используете ли вы треды, на проде" ). Если тредовый перл, и 1 поток, то ничего не упадёт, афаик.
[Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffda8961000 0x00007fdc803128d7 in Perl_gv_fetchmethod_flags () from /usr/lib/libperl.so.5.14 Program received signal SIGSEGV, Segmentation fault. 0x00007fdc803a368f in Perl_save_pushptr () from /usr/lib/libperl.so.5.14 The program being debugged was signaled while in a function called from GDB. GDB remains in the frame where the signal was received. To change this behavior use "set unwindonsignal on". Evaluation of the expression containing the function (Perl_eval_pv) will be abandoned. When the function is done executing, GDB will silently stop
Если вам не нужны треды соберите перл через perlbrew без них. Заодно и чуть быстрее работать будет. Кстати... А что дебажите?..
Что скажет p my_perl ?
парсер льет из json в БД - вижу что течет он - а где понять не могу пока.
А чуть быстрее - это сколько и на каких операциях? А то у нас до сих пор используется системный Perl и CentOS 7. Ну из-за смерти CentOS планируется апгрейд на что-то другое.
Считайте 10-30% на всех операциях. Вообще всех.
На чём-то другом у тебя всё равно перл будет тредовый из коробки. Но если вы под шумок ещё пересоберете, то это будет полезно
Обсуждают сегодня