Bug 15687 - 4.4 Портит структуру памяти при инициализации.
Summary: 4.4 Портит структуру памяти при инициализации.
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: qt4 (show other bugs)
Version: unstable
Hardware: all Linux
: P2 normal
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-05-16 17:58 MSD by Roman Savochenko
Modified: 2008-05-27 17:59 MSD (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Roman Savochenko 2008-05-16 17:58:30 MSD
Дистрибутив: Branch 4.1
Версия: libqt4-4.4.0-alt3 (Сизиф)

При инициализации, а именно в момент вызова:
new QApplication( argc, argv );
происходит разрушение инициализированных ранее структур памяти.
На приложениях основанных только на QT, а именно тех которые вызывают new 
QApplication( argc, argv ); в функции main() это фактически не сказывается. А 
вот на приложениях инициирующих QT далеко не сразу и не в main(), а даже в 
другом от основного потоке, это отчётливо сказывается.

Проверялось путём простой инициализации и удалении, сразу.
QApplication *QtApp = new QApplication( argc, argv );
delete QtApp;

После чего значительная часть ключевых, ранее выделенных, структур памяти 
оказывалась разрушенной.

На ранних версиях (до 4.3.4) этой проблемы не было.

Обнаружилось также срабатывание сигналов до завершения вызова и следуйщей 
итерации notify(). Создавая впечатление реальной многопототочности в потоке 
визуализации. А это, без покрытия ресурсами, черевато.

Эти проблемы проявляются у людей и на Ubuntu 8.04.
Comment 1 Andrey Rahmatullin 2008-05-16 18:06:03 MSD
Тестовый проект в студию.
Comment 2 Roman Savochenko 2008-05-17 09:34:55 MSD
Я несколько поторопился с выводами. Просто то как 4.4 повлияло на
работоспособность удивило.

На самом деле new QApplication( argc, argv ); вызывается достаточно рано, хотя и
не в основном потоке (так надо).

Но дальнейшая работа сильно изменяется, часть данных или не грузится или теряется.
Сейчас идут разборки. По факту сообщу.
Comment 3 Roman Savochenko 2008-05-17 21:09:28 MSD
Оказалось всё банальнее. В 4.4 они добавили принудительную установку локали, а 
именно а именно LC_NUMERIC. В случае моей программы я значение этого атрибута 
локали сбрасываю в "C" для обеспечения единообразия при работе и хранении 
вещественных чисел, а именно исключаю проблемы парсинга вещественных чисел с 
резделителем в '.' (23.56) на кириллических локалях.

Так вот после инициализации QT все вещественные числа у меня и накрылись, в 
смысле дробная часть отбросилась. :)