Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webkit segfault #4

Open
fedya opened this issue Sep 22, 2022 · 15 comments
Open

webkit segfault #4

fedya opened this issue Sep 22, 2022 · 15 comments

Comments

@fedya
Copy link

fedya commented Sep 22, 2022

патч для webkit https://github.com/ilyakurdyukov/e2k-ports/blob/main/webkitgtk-2.34.3-e2k.patch
сегфолтит epiphany

bt full
проверил на разных версиях, каждый раз одна и та же ошибка

0x0000455563445920 in JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) () from /usr/lib64/libjavascriptcoregtk-4.0.so.18
(gdb) bt full
#0  0x0000455563445920 in JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#1  0x000045556336a360 in JSC::BlockDirectory::sweep() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#2  0x000045556344a458 in JSC::MarkedSpace::sweepBlocks() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#3  0x0000455563390780 in JSC::Heap::sweepSynchronously() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#4  0x00004555633a6f98 in JSC::Heap::finalize() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#5  0x00004555633a03d8 in JSC::Heap::handleNeedFinalize(unsigned int) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#6  0x00004555633a04f0 in JSC::Heap::handleNeedFinalize() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#7  0x000045556339d3b0 in JSC::Heap::finishChangingPhase(JSC::GCConductor) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#8  0x000045556339d190 in JSC::Heap::changePhase(JSC::GCConductor, JSC::CollectorPhase) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#9  0x000045556339b6b0 in JSC::Heap::runEndPhase(JSC::GCConductor) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#10 0x00004555633971d0 in JSC::Heap::runCurrentPhase(JSC::GCConductor, JSC::CurrentThreadState*) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#11 0x00004555633be380 in WTF::ScopedLambdaFunctor<void (JSC::CurrentThreadState&), JSC::Heap::collectInMutatorThread()::{lambda(JSC::CurrentThreadState&)#1}>::implFunction(void*, JSC::CurrentThreadState&) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#12 0x000045556342da48 in JSC::callWithCurrentThreadState(WTF::ScopedLambda<void (JSC::CurrentThreadState&)> const&) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#13 0x000045556339d808 in JSC::Heap::collectInMutatorThread() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#14 0x000045556339f838 in JSC::Heap::stopIfNecessarySlow(unsigned int) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#15 0x000045556339f5e8 in JSC::Heap::stopIfNecessarySlow() () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#16 0x0000455563427218 in JSC::LocalAllocator::allocateSlowCase(JSC::Heap&, JSC::GCDeferralContext*, JSC::AllocationFailureMode) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#17 0x0000455562e58280 in void* JSC::tryAllocateCellHelper<JSC::JSFinalObject>(JSC::Heap&, unsigned long, JSC::GCDeferralContext*, JSC::AllocationFailureMode) ()
    at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#18 0x00004555636541e8 in JSC::constructEmptyObject(JSC::JSGlobalObject*) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#19 0x00004555646d1118 in JSC::LiteralParser<char16_t>::parse(JSC::ParserState) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#20 0x0000455564477118 in JSC::JSONParse(JSC::JSGlobalObject*, WTF::String const&) () at /usr/lib64/libjavascriptcoregtk-4.0.so.18
#21 0x000045555d9be650 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#22 0x000045555d9bf2a0 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#23 0x000045555a578380 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#24 0x000045555a6fc3b8 in  () at /usr/lib64/libwebkit2gtk-4.0.so.37
#25 0x000045555a6fc8c8 in webkit_user_content_filter_store_save () at /usr/lib64/libwebkit2gtk-4.0.so.37
#26 0x000045555575e6d0 in  () at /usr/lib64/epiphany/libephymain.so
#27 0x0000455556c41d08 in  () at /usr/lib64/libgio-2.0.so.0
#28 0x00004555570aedf0 in  () at /usr/lib64/libglib-2.0.so.0
#29 0x00004555570a63c8 in  () at /usr/lib64/libglib-2.0.so.0
#30 0x00004555570a8d78 in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#31 0x00004555570a9600 in  () at /usr/lib64/libglib-2.0.so.0
#32 0x00004555570a9868 in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#33 0x0000455556cefae8 in g_application_run () at /usr/lib64/libgio-2.0.so.0
#34 0x0000000000017930 in main ()
@fedya
Copy link
Author

fedya commented Sep 22, 2022

webkit-minibrowser точно так же крешится
спек сборки
https://abf.io/import/webkit4/blob/2.36.4/webkit4.spec
думаю может что во флагах компиляции не так.

@ilyakurdyukov
Copy link
Owner

Именно SIGSEGV или может SIGILL?

@fedya
Copy link
Author

fedya commented Sep 22, 2022

Именно сегфолт

Thread 1 "epiphany" received signal **SIGSEGV**, Segmentation fault

exc_data_page delayed interrupt at 0x455563445910 ALS0
--Type <RET> for more, q to quit, c to continue without paging--

0x0000455563445920 in JSC::MarkedBlock::Handle::sweep(JSC::FreeList*) () from /usr/lib64/libjavascriptcoregtk-4.0.so.18

@ilyakurdyukov
Copy link
Owner

Было какое-то падение, но только на страницах использующих javascript, появлялось из-за отключения COMPUTED_GOTO в патче (поэтому в опубликованном патче этого нет), что в LCC выходит медленнее, но отключенное COMPUTED_GOTO в webkit видимо сломано для 64-бит архитектур.

Проверьте что COMPUTED_GOTO включено. (LCC должен определяться как GCC совместимый.)

PlatformHave.h:

#if COMPILER(GCC_COMPATIBLE)
#define HAVE_COMPUTED_GOTO 1
#endif

PlatformEnable.h:

/* Determine if we need to enable Computed Goto Opcodes or not: */
#if HAVE(COMPUTED_GOTO) || !ENABLE(C_LOOP)
#define ENABLE_COMPUTED_GOTO_OPCODES 1
#endif

Также для qt5-webkit было падение что решилось компиляцией на -O1, видимо где-то ошибка в компиляторе.

@fedya
Copy link
Author

fedya commented Sep 22, 2022

Проверил, всё на месте и включено.
Разница с altlinux в том что в моем случае отключен JIT
Сейчас попробую пересобрать без явного отключения опции
билд лог есть здесь
https://abf.io/build_lists/4156976

@ilyakurdyukov
Copy link
Owner

JIT не может быть включен, потому что поддержки Эльбруса нет. (JIT не бывает портабельным и делается на каждую архитектуру отдельно.)

@fedya
Copy link
Author

fedya commented Sep 22, 2022

Еще какие-то идеи будут?
Может реально баг компилятора я собираю с 1.25.23

@ilyakurdyukov
Copy link
Owner

Попробуйте сами найти проблему. Также попробуйте скомпилировать с оптимизацией -O1.

@fedya
Copy link
Author

fedya commented Sep 22, 2022

Собираю уже, каждая итерация 2 часа занимает.

@fedya
Copy link
Author

fedya commented Sep 22, 2022

В общем попробовал поковырять, падает только на сайтах где есть js
на обычном html все отлично

@ilyakurdyukov
Copy link
Owner

ilyakurdyukov commented Sep 22, 2022

Видимо та же проблема, что и у нас была. Только у нас решилась этими COMPUTED_GOTO.

Кажется без COMPUTED_GOTO проблема была в том что где-то 64-бит указатели урезались до 32 бит. Стоит обратить внимание на ворнинги, правда там их будет сложно искать в логе.

Ошибка такая: error #767: conversion from pointer to smaller integer

Хотя таки без -fpermissive это ошибка в С++, и ворнинг в С. Может и не быть вообще, если хитро сделано.

@fedya
Copy link
Author

fedya commented Sep 23, 2022

Интересное
вот этот коммит https://abf.io/import/webkit4/commit/7e8e5825cb0028d90990ad081c7274f83731af89
убирает сегфолт из шапки поста
Но странички так и валятся.

варнинга 767 нигде в логе нет.

попробую оптимизацию 01

@ilyakurdyukov
Copy link
Owner

ilyakurdyukov commented Sep 23, 2022

JIT всё равно работать не может, потому что нет его реализации для Эльбруса. Возможно каким-то образом влияет на выставление других опций, хотя JIT будет отключен в любом случае. -DENABLE_JIT=OFF также не передаётся для e2k в Альте.

Попробуйте другие опции скопировать из спеки для Альта. (хотя я ничего различающегося не нашел)

@fedya
Copy link
Author

fedya commented Sep 23, 2022

Я вижу что версия в альте 2.36.7 это значит что собирают ее компилятором lcc-1.26.xx или выше
может в этом дело, в моем случае ветка 1.25.23

ну и судя по всему эту версию в альте вообще не собирали, предполагаю версия в репе 2.34.x

@ilyakurdyukov
Copy link
Owner

Нет, всё еще используем lcc-1.25.23. Версия в sisyphus_e2k: 2.34.6-alt1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants