LINUX.ORG.RU

Код собранный qmake-ом работает, а autoreconf-ом стабильно падает при форке.

 , , ,


0

1

Есть большая библиотека содержащая некий клиент, в которой чуть-ли не везде используются шаблоны, а также некая магия с арифметическими действиями над смещенями методов относительно указателей экземпляров классов(о чем компилятор постоянно прупреждает, но код тот трогать нельзя).
Есть также утилитка использующая эту библиотеку. Есть два способа сборки этого счастья: временное решение с помощью qmake и финальное результирующее с помощью autoreconf.
Оба бинарника получаются почти одинаково размера, но что странно readelf показывает что один бинарник использует OS/ABI System V, а другой GNU.
Сама утилитка работает нормально, пока не наступает пора использовать fork. Что важно код библиотеки начинает использоваться либо после форка, либо сразу без форка.
Так вот после форка бинарник собранный с помощью qmake отрабатывает стабильно, а вот с помощью autoreconf стабильно падает. В обоих ситуациях сборка происходит с помощью сгенерированного makefile. Тоесть получается один мейкфайл создает рабочий, а второй нерабочий код.
Логично предположить что причина в настройках, на первый взгляд опции вроде как одинаковы, но сами мейкфайлы по своей структуре сильно различаются, в том числе и по размерам.
По сему хочу обратиться к разработчикам которые имели подобные проблемы с просьбой помочь советом куда копать.
Бектрейсы падения постоянно меняются, при чем в середине не определяется имя функции, что я так понял является свидетельством повреждения памяти(Оба бинарника дебажные с -g и -rdynamic флагами). Помимо того что библиотека обильно использует шаблоны, она также обильно использует библиотеку boost и boost::asio. В результате сам бэктрейс почти никакой информации не несет, окромя того что вызов метода по указателю на мусор завернут в asio-совский strand и task а также обернут в boost-овский bind. Посему сам бэктрейс выглядит печально.

★★

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