Вопрос или проблема
Здрасте, я новичок!
У меня Archlabs, который работает на Archlinux. После обычного обновления большинство приложений не запускаются (Texmaker, qt5ct …), при запуске их из терминала появляется ошибка: “Ошибка сегментации (сброс памяти)”. Я проверил большинство дампов памяти, не смог понять, в чем проблема, когда попытался выполнить трассировку, нашел это ответ, который очень хорошо описывает эту проблему (вторая часть ответа), но не предоставляет шаги для новичков по ее решению.
вот первые строки из трассировки:
#0 0x00007ffff6a1405f in poll () from /usr/lib/libc.so.6
No symbol table info available.
#1 0x00007ffff3d4063b in ?? () from /usr/lib/libxcb.so.1
No symbol table info available.
#2 0x00007ffff3d4237b in xcb_wait_for_event () from /usr/lib/libxcb.so.1
No symbol table info available.
#3 0x00007ffff3932c51 in ?? () from /usr/lib/libQt5XcbQpa.so.5
No symbol table info available.
#4 0x00007ffff6dabe0f in ?? () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#5 0x00007ffff67bf422 in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#6 0x00007ffff6a1ebf3 in clone () from /usr/lib/libc.so.6
No symbol table info available.
Thread 1 (Thread 0x7ffff3d20800 (LWP 2433)):
#0 0x00007ffff69dd640 in __tzfile_compute () from /usr/lib/libc.so.6
No symbol table info available.
#1 0x00007ffff69dc57d in __tz_convert () from /usr/lib/libc.so.6
No symbol table info available.
#2 0x00007ffff69daa61 in ranged_convert () from /usr/lib/libc.so.6
No symbol table info available.
#3 0x00007ffff69dadac in __mktime_internal () from /usr/lib/libc.so.6
No symbol table info available.
#4 0x00007ffff6d9fd30 in qMkTime(tm*) () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#5 0x00007ffff6e749ce in ?? () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#6 0x00007ffff6e75068 in ?? () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#7 0x00007ffff6e7516d in ?? () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#8 0x00007ffff6e75620 in ?? () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#9 0x00007ffff6e7784c in QDateTime::setMSecsSinceEpoch(long long) () from /usr/lib/libQt5Core.so.5
No symbol table info available.
#10 0x00007ffff6e79c81 in QDateTime::fromMSecsSinceEpoch(long long, Qt::TimeSpec, int) () from /usr/lib/libQt5Core.so.5
после этого следуют действительно длинные повторяющиеся секции.
Заранее спасибо.
Ну, было упомянуто несколько решений…
Вы можете сделать это следующим образом:
- Сначала проверьте, является ли это проблемой программного или аппаратного обеспечения:
- Загрузитесь с живого носителя, попробуйте поиграть с этим: просмотрите, запустите некоторые программы, …
Если это тоже не удается, возможно, у вас плохая память, и вам нужно ее заменить.
Для уверенности вы также можете использовать Memtest86+ для дополнительной проверки.
- Загрузитесь с живого носителя, попробуйте поиграть с этим: просмотрите, запустите некоторые программы, …
- Если все работает нормально, значит проблема в вашей установке. У вас теперь есть несколько вариантов:
- Начните с запуска некоторого небольшого программного обеспечения, которое почти ничего не делает и использует как можно меньше библиотек, увеличивайте “размер” программного обеспечения, пока оно не сломается, и вернитесь к нам. Я бы сделал так:
/bin/true
(это чрезвычайно маленькая программа, которая немедленно завершает выполнение с кодом возврата 0)/bin/sleep 1000
(тоже небольшая, она просто ожидает 1000 секунд и завершает выполнение)- Продолжите с
cat somefile
,less somefile
,nano somefile
,screen
, … - Если все это работает, начните с графического программного обеспечения:
xeyes
,xterm
, …
К этому времени у нас будет достаточно информации, чтобы увидеть, в чем проблема.
- Также, запустите ваше программное обеспечение в Valgrind. Это тоже может предоставить нам больше информации.
- Начните с запуска некоторого небольшого программного обеспечения, которое почти ничего не делает и использует как можно меньше библиотек, увеличивайте “размер” программного обеспечения, пока оно не сломается, и вернитесь к нам. Я бы сделал так:
.
Ответ или решение
Когда при запуске большинства приложений на ArchLinux после обновления возникает сообщение “Segmentation fault (core dumped)”, это может быть очень неприятной проблемой, особенно для новичков. Разберёмся подробно в том, что это может означать и как подойти к её решению.
Анализ проблемы
Ошибка “Segmentation fault” указывает на то, что программа пытается обратиться к области памяти, которая ей недоступна. Это часто связано с ошибками в коде программы или неправильными конфигурациями системных библиотек.
Шаги по диагностике и устранению проблемы
Проверка на аппаратные проблемы
- Сначала проверьте, существует ли аппаратная проблема. Загрузитесь с live-носителя, например, с Live CD или USB, и попробуйте запустить приложения.
- Если ошибка повторяется, есть вероятность неисправности оперативной памяти.
- Для окончательной проверки используйте утилиту Memtest86+. Это поможет убедиться в отсутствии проблем с памятью.
Диагностика на уровне программного обеспечения
Если на live-носителе всё работает, проблема скорее всего связана с вашим программным обеспечением. Попробуйте следующие шаги:
- Запустите простые программы, которые используют минимум библиотек, чтобы убедиться, что они работают. Например:
/bin/true
– простая программа, которая немедленно завершает свою работу с кодом возврата 0./bin/sleep 1000
– ещё одна простая программа, которая просто ожидает 1000 секунд и завершает свою работу.- Далее проверьте
cat somefile
,less somefile
,nano somefile
.
- Затем попробуйте запустить простые графические программы, такие как
xeyes
илиxterm
. - Это поможет понять, где происходит поломка.
Дополнительные инструменты
- Запустите проблемное программное обеспечение с помощью Valgrind. Эта утилита помогает выявить утечки памяти и неправильные доступы к памяти, что может дать дополнительную информацию о проблеме.
Заключение
Несмотря на сложность появления сегментационной ошибки, точная диагностика может значительно упроститься с помощью последовательного подхода и использования правильных инструментов. Приведённые выше шаги помогут вам определить основную причину проблемы и найти эффективное решение. Не стесняйтесь обращаться за помощью к сообществу ArchLinux, если потребуется.