LINUX.ORG.RU

[gentoo] Получить трейс general protection

 


0

1

Юзаю хромиум. Апдейты на момент написания - последние. Chromium - 18.0.1025.39 v8 - 3.8.9.8

Вот такое безобразие в dmesg:

[ 9249.940070] chrome[21715] general protection ip:7f7b8e998440 sp:7fff6effe078 error:0 in libv8.so.3.8.9[7f7b8e833000+3de000]

Как собрать v8 с дебагами? и получить трейс? В ебилде нислова. Да и синтаксис их уж больно непонятный



Последнее исправление: libbkmz (всего исправлений: 1)
Ответ на: комментарий от anonymous
CFLAGS="-march=native -O2 -pipe"
CXXFLAGS="${CFLAGS}"
CHOST="x86_64-pc-linux-gnu"
ACCEPT_KEYWORDS="~amd64"
USE="mmx sse sse2"
USE="$USE X kde qt4 dvd alsa cdr jpeg jpeg2k v4l ffmpeg samba smb"
USE="$USE consolekit dbus policykit udev"
USE="$USE -gnome -gtk"
USE="$USE -kontact -ldap"
USE="$USE bash-completion"
VIDEO_CARDS="intel"
INPUT_DEVICES="evdev synaptics"
MAKEOPTS="-j6"
GENTOO_MIRRORS="http://mirror.yandex.ru/gentoo-distfiles/"
SYNC="rsync://rsync.ru.gentoo.org/gentoo-portage"
PORTDIR_OVERLAY="/usr/local/portage/"
source /var/lib/layman/make.conf

Если бы я не видал этого, то ничего не спрашивал, а так как v8 собирается странным для меня образом, там и -O3 и -O2 и -fomit-frame-pointer

  x86_64-pc-linux-gnu-g++ '-DENABLE_DEBUGGER_SUPPORT' '-DV8_TARGET_ARCH_X64' '-DBUILDING_V8_SHARED' '-DV8_SHARED' -I../src -Waer -Wnon-virtual-dtor -pthread -fno-rtti -fno-exceptions -pedantic -ansi -fvisibility=hidden -fPIC -fdata-sections -ffunction-nter -O3  -MMD -MF /var/tmp/portage/dev-lang/v8-3.8.9.8/work/v8-3.8.9.8/out/x64.release/.deps//var/tmp/portage/dev-lang/v8-3.8x64.release/obj.target/v8_base/src/inspector.o.d.raw -march=native -O2 -pipe -c -o /var/tmp/portage/dev-lang/v8-3.8.9.8/work/v/obj.target/v8_base/src/inspector.o ../src/inspector.cc

libbkmz
() автор топика
Ответ на: комментарий от libbkmz

там и -O3 и -O2 и -fomit-frame-pointer

ну раз у тебя глобально этого нет, значит так разрабы выставили, всё нормально

версия gcc? gcc-config -l

anonymous
()
Ответ на: комментарий от anonymous
 [1] x86_64-pc-linux-gnu-4.5.3 *

Дособралось. Ребутаюсь и буду отлавливать сегфолты.

PS дебаг так собираю:

CFLAGS="-march=native -O2 -ggdb"
CXXFLAGS="${CFLAGS}"
FEATURES="nostrip"

нормально?

libbkmz
() автор топика
Ответ на: комментарий от anonymous

Неа, нету.

[ebuild   R    ] dev-lang/v8-3.8.9.8  0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB

libbkmz
() автор топика

Собрал v8 с дебагами. Вопрос в том как выдернуть backtrace из General protection?

[  682.547801] chrome[3445]: segfault at 343710f9a107 ip 00007fdf60942440 sp 00007fffb65f8f78 error 4 in libv8.so.3.8.9[7fdf607dd000+3de000]
[  683.697281] chrome[3431] general protection ip:7fdf60942440 sp:7fffb65f8f38 error:0 in libv8.so.3.8.9[7fdf607dd000+3de000]

Потому как ничего не дает

libbkmz
() автор топика
Ответ на: комментарий от libbkmz

Продолжаю ловить GP.

[20068.968041] chrome[15799] general protection ip:7f735c1d3ed8 sp:7fffa1bf58d8 error:0 in libv8.so.3.8.9[7f735c051000+3de000]

Но трейс не могу получить. У кого какие идеи?

libbkmz
() автор топика

Помимо -g в CFLAGS и CXXFLAGS (да, обе переменные надо задавать в make.conf!), тебе еще нужно FEATURES=nostrip, иначе отладочная информация вырежется из бинарников при установке.

Для ловли ошибок лучше всего запустить хром из консоли, в которой предварительно выполнена команда ulimit -c unlimited. Тогда после падения в текущей директории (убедись, что в ней достаточно места для дампа и у тебя хватает прав для его записи) образуется файл core.XXXX, где XXXX — pid упавшего процесса. Посмотреть бактрейс очень просто: gdb exename corename, где exename — имя бинарника (не шелловского скрипта google-chrome!), corename — имя корки. После загрузки gdb дается команда bt — готово.

red_eyed_peguin
()
Ответ на: комментарий от libbkmz

запускай под gdb же, включи сохранение дампов чз ulimit -c

anonymous
()
Ответ на: комментарий от red_eyed_peguin

Сделал, как просили:


bkmz@bkmz-hp-laptop ~ $ ulimit -c unlimit
bkmz@bkmz-hp-laptop ~ $ ulimit -c
unlimited

bkmz@bkmz-hp-laptop ~ $ chromium
[5990:6001:4790578906:ERROR:object_proxy.cc(239)] Failed to call method: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.NetworkManager was not provided by any .service files
[175:191:4825276137:ERROR:platform_thread_posix.cc(251)] Not implemented reached in static void base::PlatformThread::SetThreadPriority(base::PlatformThreadHandle, base::ThreadPriority)
[175:192:4825277894:ERROR:platform_thread_posix.cc(251)] Not implemented reached in static void base::PlatformThread::SetThreadPriority(base::PlatformThreadHandle, base::ThreadPriority)
^C
[ 4999.801439] chrome[6444] general protection ip:7fdf658b1abd sp:7fff2735f990 error:0 in libv8.so.3.8.9[7fdf65777000+3de000]

bkmz@bkmz-hp-laptop ~ $ gdb /usr/lib/libv8.so.3.8.9
GNU gdb (Gentoo 7.4 p1) 7.4
Copyright (C) 2012 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-pc-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.gentoo.org/>...
Reading symbols from /usr/lib64/libv8.so.3.8.9...done.
(gdb) 

Установил дамп, завел хром, словил GP, дальше смотрел в хомяк, там ничего нет. Проверил, у либы есть дебаг символы.

Нашел я способ дебажить хром, но через кучу окон и каждое из которых нужно запускать чтобы посерфить - не вариант, так как очень спонтанно вываливается...

libbkmz
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.