SIGSEGV в QAbstractSocket::writeData при записи 5k данных

Работая в системе ARM, я получаю SIGSEGV в QAbstractSocket::writeData(char const*, long long). Я звоню через QIODevice::write(char const*, long long), и это умеренно небольшой объем данных. Всего 5к.

Я проверяю, что отправляемая память правильно распределена с помощью new[] и что QIODevice открыт перед отправкой. Меньшие пакеты работают надежно, но точный порог, когда пакеты слишком велики, кажется, меняется. Я бинарно искал его, чтобы найти его чуть ниже 4 Кб, но затем при запуске кода в gdb он немного вырос, но я не бинарный поиск, чтобы найти, где именно.

Существует много запасных оперативной памяти, я могу увеличить размер пакета до более чем 1М, и новый [] по-прежнему счастлив.

Версия Qt 4.8.6.

Я бы предпочел не раскрывать всю обратную трассировку от проекта, она раскрывает больше деталей проекта, чем мне бы хотелось. Но верхние несколько кадров:

#0  0xb6b6ed6c in __memcpy_neon () at ../ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S:596  
#1  0xb6f71dce in QAbstractSocket::writeData(char const*, long long) () from /usr/lib/arm-linux-gnueabihf/libQtNetwork.so.4  
#2  0xb6d9b5fe in QIODevice::write(char const*, long long) () from /usr/lib/arm-linux-gnueabihf/libQtCore.so.4

Любые идеи о том, что идет не так?

0 ответов

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