LINUX.ORG.RU

[gentoo] gcc 4.4.1 & firefox 3.5.2

 


0

0

После после перехода на новый gcc стал сегфолтиться фаерфокс. У кого нормально, поделитесь ключами, с которыми его собирали.

Сейчас вся система собрана с CFLAGS="-O2 -march=native -mtune=native -mmmx -msse -msse2 -msse3-mssse3 -mfpmath=sse -ftree-vectorize -fomit-frame-pointer -maccumulate-outgoing-args -ftree-loop-distribution -pipe"

★★★★★

facepalm.sh

У меня после перехода на GCC 4.4.1 начал сегфолтиться bash на больших скриптах.

Deleted
()

собирайте 4.1.2 , там можно любые флаги, Мозилла для официальных билдов им и собирает.

Sylvia ★★★★★
()

И у меня падает с похожими флагами. :( Присоединяюсь к реквесту.

Причём остальное всё работает и работает быстрее.Не хочу из-за одного файерфокса отдельную версию компилятора держать. .\_/.

nitz ★★
()
Ответ на: комментарий от sig_wall

SIGWALL ится )


по теме
сборка просто с CFLAGS/CXXFLAGS="-O2"

~ :$firefox&
[1] 10536
~ :$/usr/local/lib/firefox-3.5/run-mozilla.sh: line 131: 10552 Segmentation fault "$prog" ${1+"$@"}

[1]+ Exit 139 firefox

Sylvia ★★★★★
()
Ответ на: комментарий от sig_wall

>Именно сегфолтится или SIGILL'ится?

Сегфолтится. Финальный выхлоп strace:

open("/home/madcore/.mozilla/firefox/dyk9yyk0.default/places.sqlite-journal", O_RDONLY|O_LARGEFILE) = 16
fcntl64(16, F_GETFD) = 0
fcntl64(16, F_SETFD, FD_CLOEXEC) = 0
_llseek(16, 0, [0], SEEK_SET) = 0
read(16, "\0"..., 1) = 1
close(16) = 0
_llseek(15, 24, [24], SEEK_SET) = 0
read(15, "\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0"..., 16) = 16
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
unlink("/home/madcore/.mozilla/firefox/dyk9yyk0.default/lock") = 0
rt_sigaction(SIGSEGV, {SIG_DFL, [], 0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0
tgkill(21332, 21332, SIGSEGV) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++

madcore ★★★★★
() автор топика
Ответ на: facepalm.sh от Deleted

>У меня после перехода на GCC 4.4.1 начал сегфолтиться bash на больших скриптах.

А можно пример скрипта для теста?

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

да, у меня тоже в этом же месте

[pid 11113] read(25, "SQLite format ..."..., 100) = 100
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] access("/home/sylvia/.mozilla/firefox/.../places.sqlite-journal", F_OK) = -1 ENOENT (No such file or directory)
[pid 11113] fstat64(25, {st_mode=S_IFREG|0600, st_size=8552448, ...}) = 0
[pid 11113] lseek(25, 0, SEEK_SET) = 0
[pid 11113] read(25, "SQLite format ..."..., 4096) = 4096
[pid 11113] lseek(25, 114688, SEEK_SET) = 114688
[pid 11113] read(25, "..."..., 4096) = 4096
[pid 11113] lseek(25, 122880, SEEK_SET) = 122880
[pid 11113] read(25, "..."..., 4096) = 4096
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] access("/home/sylvia/.mozilla/firefox/.../places.sqlite-journal", F_OK) = -1 ENOENT (No such file or directory)
[pid 11113] fstat64(25, {st_mode=S_IFREG|0600, st_size=8552448, ...}) = 0
[pid 11113] lseek(25, 24, SEEK_SET) = 24
[pid 11113] read(25, "..."..., 16) = 16
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] access("/home/sylvia/.mozilla/firefox/.../places.sqlite-journal", F_OK) = -1 ENOENT (No such file or directory)
[pid 11113] fstat64(25, {st_mode=S_IFREG|0600, st_size=8552448, ...}) = 0
[pid 11113] lseek(25, 24, SEEK_SET) = 24
[pid 11113] read(25, "..,"..., 16) = 16
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 0
[pid 11113] open("/proc/meminfo", O_RDONLY) = 26
[pid 11113] fstat64(26, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
[pid 11113] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3da1000
[pid 11113] read(26, "MemTotal: 3115396 kB\nMemFr"..., 1024) = 1024
[pid 11113] close(26) = 0
[pid 11113] munmap(0xb3da1000, 4096) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0
[pid 11113] fcntl64(25, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0
[pid 11113] access("/home/sylvia/.mozilla/firefox/.../places.sqlite-journal", F_OK) = -1 ENOENT (No such file or directory)
[pid 11113] fstat64(25, {st_mode=S_IFREG|0600, st_size=8552448, ...}) = 0
[pid 11113] lseek(25, 24, SEEK_SET) = 24
[pid 11113] read(25, "..."..., 16) = 16
[pid 11113] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
[pid 11113] unlink("/home/sylvia/.mozilla/firefox/.../lock") = 0
[pid 11113] rt_sigaction(SIGSEGV, {SIG_DFL}, NULL, 8) = 0
[pid 11113] rt_sigprocmask(SIG_UNBLOCK, [SEGV], NULL, 8) = 0
[pid 11113] tgkill(11113, 11113, SIGSEGV) = 0
[pid 11113] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
Process 11109 resumed

Sylvia ★★★★★
()
Ответ на: комментарий от madcore

> А можно пример скрипта для теста?

Извиняюсь, но я не помню какой из моих скриптов убивал баш, а сегодня этот номер повторить не удаётся =(. Если вспомню, на каком именно баш падал, или это снова начнётся - выложу скрипт.

P.S. Падало только вчера и похоже вылечилось пересборкой баша.

Deleted
()

> CFLAGS
cat /etc/make.conf |grep CFLAGS
CFLAGS="-O3 -march=core2 -pipe -mfpmath=sse -msse4.1 -g0"
CXXFLAGS="${CFLAGS}"
CPPFLAGS="${CFLAGS}"

gcc-config -l | grep 4.4.*
[2] x86_64-pc-linux-gnu-4.4.1 *

Сегфолтов нет.
Я бы убрал -maccumulate-outgoing-args и посмотрел что будет.




fedkoff
()

Фокс стабилен, с этими флагами собрана вся система.

CFLAGS="-march=native -O2 -falign-functions=64 -fomit-frame-pointer -ftree-vectorize -ftree-loop-distribution -floop-interchange -floop-block -floop-strip-mine"

gcc -m64 -fverbose-asm -march=native -Q --help=target

The following options are target specific:
  -m128bit-long-double                  [disabled]
  -m32                                  [disabled]
  -m3dnow                               [disabled]
  -m3dnowa                              [disabled]
  -m64                                  [enabled]
  -m80387                               [enabled]
  -m96bit-long-double                   [enabled]
  -mabm                                 [disabled]
  -maccumulate-outgoing-args            [disabled]
  -maes                                 [disabled]
  -malign-double                        [disabled]
  -malign-functions=
  -malign-jumps=
  -malign-loops=
  -malign-stringops                     [enabled]
  -march=                               k8-sse3
  -masm=
  -mavx                                 [disabled]
  -mbranch-cost=
  -mcld                                 [disabled]
  -mcmodel=
  -mcx16                                [enabled]
  -mfancy-math-387                      [enabled]
  -mfma                                 [disabled]
  -mforce-drap                          [disabled]
  -mfp-ret-in-387                       [enabled]
  -mfpmath=
  -mfused-madd                          [enabled]
  -mglibc                               [enabled]
  -mhard-float                          [enabled]
  -mieee-fp                             [enabled]
  -mincoming-stack-boundary=
  -minline-all-stringops                [disabled]
  -minline-stringops-dynamically        [disabled]
  -mintel-syntax                        [disabled]
  -mlarge-data-threshold=
  -mmmx                                 [disabled]
  -mms-bitfields                        [disabled]
  -mno-align-stringops                  [disabled]
  -mno-fancy-math-387                   [disabled]
  -mno-fused-madd                       [disabled]
  -mno-push-args                        [disabled]
  -mno-red-zone                         [disabled]
  -mno-sse4                             [enabled]
  -momit-leaf-frame-pointer             [disabled]
  -mpc
  -mpclmul                              [disabled]
  -mpopcnt                              [disabled]
  -mpreferred-stack-boundary=
  -mpush-args                           [enabled]
  -mrecip                               [disabled]
  -mred-zone                            [enabled]
  -mregparm=
  -mrtd                                 [disabled]
  -msahf                                [enabled]
  -msoft-float                          [disabled]
  -msse                                 [disabled]
  -msse2                                [disabled]
  -msse2avx                             [disabled]
  -msse3                                [disabled]
  -msse4                                [disabled]
  -msse4.1                              [disabled]
  -msse4.2                              [disabled]
  -msse4a                               [disabled]
  -msse5                                [disabled]
  -msseregparm                          [disabled]
  -mssse3                               [disabled]
  -mstack-arg-probe                     [disabled]
  -mstackrealign                        [enabled]
  -mstringop-strategy=
  -mtls-dialect=
  -mtls-direct-seg-refs                 [enabled]
  -mtune=                               k8
  -muclibc                              [disabled]

kdf16rc
()
Ответ на: комментарий от ss85

На чистом профиле и через --safe-mode тоже падает.

nitz ★★
()
Ответ на: комментарий от ss85

у меня не gentoo, Debian Squeeze
исходники с ftp.mozilla.org
firefox-3.5.2-source.tar.bz2

гентушные патчи я , впрочем, тоже брала, как падало, так и падает, что с ними, что ванильное, что 3.0.x падало, что 3.5.х

Sylvia ★★★★★
()
Ответ на: комментарий от ss85

Всё пересобрано.Обновление компилятора же.И system и world и все зависимости.

Да,у мну тоже x86.

nitz ★★
()
Ответ на: комментарий от ss85

это я пока только с --default-toolkit=cairo-qt собирала
впрочем, не думаю что там с GCC 4.4 дела обстоят лучше, проверять не буду

Sylvia ★★★★★
()
Ответ на: комментарий от kdf16rc

там при добавлении закладки падает,
кроме того в gentoo обычно используется системный sqlite

у меня падает в том числе и на bundled sqlite , который в пакете исходников ФФ

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

It is used for the development of Firefox 3.5/Mozilla 1.9.1 and later releases.

Вдруг разработчики в курсе этой проблеммы и давно ее уже исправили.Попробуй взять самые свежие исходники ветки Firefox 3.5/Mozilla 1.9.1 . А firefox-3.5.2-source.tar.bz2 это уже каменный век судя по всему

PS : Тогда я сам проверю потом

ss85
()
Ответ на: комментарий от Sylvia

впрочем подмена libnspr4.so на версию компилированную GCC 4.1.2 (т.е. корректно)
не помогает
как и libsqlite3.so и другие библиотеки по отдельности ;)

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

Мне кажется бинарной совместимости c gcc 4.4.1 слегка нет... У меня вот imule (я его сейчас пилю) перестал собираться gcc 4.4.1. Причем даже gcc 4.3.4, которым он собирался, не линкует его с wxGTK собранным gcc 4.4.1. Отсюда мораль... Не стоит мешать собранное 4.4.1 с собранным 4.X IMHO

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

ABI в gcc 4.4 меняли в отношении packed bits

# Packed bit-fields of type char were not properly bit-packed on many targets prior to GCC 4.4. On these targets, the fix in GCC 4.4 causes an ABI change. For example there is no longer a 4-bit padding between field a and b in this structure:

struct foo
{
char a:4;
char b:8;
} __attribute__ ((packed));

There is a new warning to help identify fields that are affected:

foo.c:5: note: Offset of packed bit-field 'b' has changed in GCC 4.4

The warning can be disabled with -Wno-packed-bitfield-compat.

в остальном бинарная совместимость должна сохраняться

Sylvia ★★★★★
()

/var/tmp/mozilla-central-eb017398f8f1/binary/usr/local/lib/firefox-3.7a1pre$ ./firefox


та та.. работает
сейчас попробую тот же метод на 3.5.2 , кажется проблема решается достаточно тривиально

Sylvia ★★★★★
()
Ответ на: комментарий от nitz

на 3.0 то же что и на 3.5
я надеялась что в 3.5 пофиксят . не пофиксили

Sylvia ★★★★★
()
Ответ на: комментарий от ss85

>попробуй с опцией -Wno-packed-bitfield-compat

Так если остальная система собрана той же версией, то проблем с ABI ведь быть не должно

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

кстати логично, же . Из-за проблем с ABI много бы чего поломалось

ss85
()
Ответ на: комментарий от madcore

Да, не должно. Для того и пересобираем... Только я вот был уверен, что ABI не менялся, и ряд своих самописных ебилдов не пересобирал... Вот внезапно наблюдаю ряд чудес... И знакомый ещё сообщал, что он мир не пересобирал, а только компилёр переключил. И система ломаться начала потихоньку при обновлениях. Именно с bash проблемы и т.п. глючные мелочи.

kdf16rc
()
Ответ на: комментарий от ss85

>попробуй с опцией -Wno-packed-bitfield-compat

Это опция только убирает предупреждающее сообщение

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

не все так тривиально
/var/tmp/mozilla-1.9.1/binary/usr/local/lib/firefox-3.5.2$ ./firefox
./run-mozilla.sh: line 131: 26401 Segmentation fault "$prog" ${1+"$@"}


вообщем с тем что в hg mozilla-central оно не падает

Sylvia ★★★★★
()

ps: и все-таки напишу про "тривиальное" решение для проблемного кода

-fno-strict-aliasing

правда в случае с FF 3.5.2 это не помогло

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

за 15 минут упал 2 раза.. что-то мне это совсем не нравится

Sylvia ★★★★★
()
Ответ на: комментарий от nitz

>Не хочу из-за одного файерфокса отдельную версию компилятора держать.

в генте есть firefox-bin
официальный мозилловский..

Sylvia ★★★★★
()
Ответ на: комментарий от Sylvia

>в генте есть firefox-bin
>официальный мозилловский..


А может еще сразу диск с убантой предложите :)

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

а почему бы и нет? бинарники конечно на генту ставить это не совсем правильно,
но раз хочется покомпилить - то стабильно с любыми флагами оно собирается только 4.1.2, даже с 4.3.х были капризы

ну либо собирать 3.7а1 и мириться с тем что он может упасть на каждый чих,
с другой стороны хорошо узнать то, что мурзилкины все-таки поработали над совместимостью с новым GCC

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