Переполнение буфера при попытке запустить скрипт

Я пытаюсь запустить файл.

# !/usr/bin/en sh
CAFFEROOT=/root/caffe
export LD_LIBRARY_PATH=$CAFFEROOT/build/lib/:$LD_LIBRARY_PATH
./app --ip 1.1.0.0:8887 --workers 1 --timeout 20

но я получаю это сообщение об ошибке.

root@1b311ba128b3:~/sharedfolder/code# sh run.sh 
*** buffer overflow detected ***: ./app terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7329f)[0x7f58d08bd29f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f58d095887c]
/lib/x86_64-linux-gnu/libc.so.6(+0x10d750)[0x7f58d0957750]
./app[0x43dcfb]
./app[0x43e15c]
./app[0x40cdcf]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f58d086bf45]
./app[0x40d63f]
======= Memory map: ========
00400000-004c7000 r-xp 00000000 08:12 5513936                                /root/sharedfolder/code/app
006c6000-006c7000 r--p 000c6000 08:12 5513936                              /root/sharedfolder/code/app
006c7000-006c8000 rw-p 000c7000 08:12 5513936                            /root/sharedfolder/code/app
006c8000-006c9000 rw-p 00000000 00:00 0 
0187d000-018fb000 rw-p 00000000 00:00 0                                      [heap]

Я не уверен, что это значит? Любые идеи относительно того, как я могу подойти к этому, могут быть полезны. Заранее спасибо

./app terminated Переполнение буфера происходит в приложении, а не в сценарии. Вам нужно отладить приложение или переписать приложение без segfault. Вы можете использовать dbg, strace или valgrind или аналогичные утилиты для отладки вашего приложения.
KamilCuk 27.12.2018 13:17

Пожалуйста, покажите соответствующий код. Также см. Как создать минимальный, полный и проверяемый пример.

jww 27.12.2018 13:27

Файл приложения немного длинноват, позвольте мне попробовать отладить это

Ryan 27.12.2018 13:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

GDB был бы моим инструментом goto для этого. Что-то типа

# !/usr/bin/en sh
CAFFEROOT=/root/caffe
export LD_LIBRARY_PATH=$CAFFEROOT/build/lib/:$LD_LIBRARY_PATH gdb ./app --ip 1.1.0.0:8887 --workers 1 --timeout 20

... тогда

run

Вот хороший трюк, чтобы увидеть, как выполняются строки вплоть до segfault:

Запустите gdb, как указано выше, затем:

set logging on
break main
run
while 1
step
end

... тогда след находится в gdb.txt

Спасибо, позволь мне это проверить.

Ryan 31.12.2018 11:27

Другие вопросы по теме