Russian Qt Forum
Июль 21, 2019, 21:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 190
1  Программирование / С/C++ / Re: Порядок инициализации : Июль 11, 2019, 16:02
сборка ничего не написала, а valgrind всю память выедает со свопом )


Надо просто запустить без валгринда.
2  Программирование / С/C++ / Re: Порядок инициализации : Июль 11, 2019, 14:21
Код:
/usr/lib/ccache/clang++ -g -O0 -Wall -Wextra -fsanitize=memory -target x86_64-pc-linux-gnu -pipe -fexceptions -fvisibility=default -fno-omit-frame-pointer -fPIC -DQT_DEPRECATED_WARNINGS -DQT_CORE_LIB -I/home/ivk/Qt/5.12.3/gcc_64/include -I/home/ivk/Qt/5.12.3/gcc_64/include/QtCore -I/home/ivk/Qt/5.12.3/gcc_64/mkspecs/linux-g++ -I/home/ivk/programming/build-test-cpp1-Desktop_Qt_5_12_3_clang_64bit-Debug/Debug/test-cpp1.5d46f22d/qt.headers -std=c++11 -o /home/ivk/programming/build-test-cpp1-Desktop_Qt_5_12_3_clang_64bit-Debug/Debug/test-cpp1.5d46f22d/3a52ce780950d4d9/main.cpp.o -c /home/ivk/programming/test-cpp1/main.cpp

в гцц нет флажка -fsanitize=memory, кажется
3  Программирование / С/C++ / Порядок инициализации : Июль 11, 2019, 11:38
А вот ещё интересное наткнулся=)
Вот есть простой код:
Код:
#include <QStringList>

QStringList list = {QStringLiteral("hello"), QStringLiteral("world")}; // global static

int main(int argc, char *argv[])
{
    return 0;
}

Собираем с -fsanitize=memory -fno-omit-frame-pointer, получаем
Цитировать
==105522==WARNING: MemorySanitizer: use-of-uninitialized-value
    #0 0x49aa17 in QList<QString>::node_copy(QList<QString>::Node*, QList<QString>::Node*, QList<QString>::Node*) /home/ivk/Qt/5.12.3/gcc_64/include/QtCore/qlist.h:477:13
    #1 0x49a5da in QList<QString>::detach_helper(int) /home/ivk/Qt/5.12.3/gcc_64/include/QtCore/qlist.h:791:9
    #2 0x499d8d in QList<QString>::reserve(int) /home/ivk/Qt/5.12.3/gcc_64/include/QtCore/qlist.h:575:13
    #3 0x499961 in QList<QString>::QList(std::initializer_list<QString>) /home/ivk/Qt/5.12.3/gcc_64/include/QtCore/qlist.h:165:7
    #4 0x498ee8 in QStringList::QStringList(std::initializer_list<QString>) /home/ivk/Qt/5.12.3/gcc_64/include/QtCore/qstringlist.h:110:63
    #5 0x41f527 in __cxx_global_var_init.1 /home/ivk/programming/test-cpp1/main.cpp:29:20
    #6 0x41f7ad in _GLOBAL__sub_I_main.cpp /home/ivk/programming/test-cpp1/main.cpp
    #7 0x49d554 in __libc_csu_init (/home/ivk/programming/build-test-cpp1-Desktop_Qt_5_12_3_clang_64bit-Debug/Debug/install-root/usr/local/bin/test-cpp1+0x49d554)
    #8 0x7f8e29d92029 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24029)
    #9 0x41f7d9 in _start (/home/ivk/programming/build-test-cpp1-Desktop_Qt_5_12_3_clang_64bit-Debug/Debug/install-root/usr/local/bin/test-cpp1+0x41f7d9)

SUMMARY: MemorySanitizer: use-of-uninitialized-value /home/ivk/Qt/5.12.3/gcc_64/include/QtCore/qlist.h:477:13 in QList<QString>::node_copy(QList<QString>::Node*, QList<QString>::Node*, QList<QString>::Node*)
Exiting

С одной стороны понятно, QList использует (global static) shared_null для индикации "пустого" списка (чтобы не проверять d-ptr на null в каждом методе). Есть два глобал статика (наш QStringList и его shared_null), порядок инициализации не определен.
С другой, в дебаггере видно "хорошие" значения - нули для указателей и -1 для атомарного счетчика (индикатор shared_null). То есть это всё таки было проинициализировано корректно.

Очередной false positive анализатора?
4  Qt / Многопоточное программирование, процессы / Re: memory_order : Июль 11, 2019, 00:39
Обновил gcc с 4.8 до 8.2 код ВНЕЗАПНО стал падать где раньше не падал (при обращении к мемберу из разных тредов).

Пример кода можно? Защита хоть какая была?

Да нет ничего, о том и речь...
5  Qt / Многопоточное программирование, процессы / Re: memory_order : Июль 10, 2019, 16:44
Хе-хе, к разговору о мьютексах, атомиках и UB. Обновил gcc с 4.8 до 8.2 код ВНЕЗАПНО стал падать где раньше не падал (при обращении к мемберу из разных тредов).
А вы "ну у меня же работает" Улыбающийся
6  Qt / Вопросы новичков / Re: Qt Ui и существующие классы. : Июль 09, 2019, 10:27
widget->promote to...
или писать свой плагин что геморно
7  Qt / Qt-инструментарий / Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна : Июль 07, 2019, 20:17
Ну, допустим я генерю плюсовый хедер, в котором находится номер ревизии, кастомным рулом.
Как ИДЕ узнает о его существовании? В случае clang-db никак - надо сперва собрать проект через qbs (и сгенерить все эти хедеры) и только потом можно полноценно юзать clang-db (например, натравить анализатор).
8  Программирование / С/C++ / Re: Uniquer : Июль 07, 2019, 17:52
Ну задача прямо скажем сформирована фигово. В очередной раз. Да, перечитав сейчас я понимаю, что требуется. Но при первом прочтении (да и последующих) это действительно выглядело как "взять и заполнить ВСЕ дырки в контейнере".
Если 10 человек тебе говорят "пойди проспись" - пойди и проспись=) (с)
9  Qt / Qt-инструментарий / Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна : Июль 07, 2019, 17:16
А верно я понимаю, что эта штука сделана по аналогии с clang-db генератором и в итоге игнорит все кастомные рулы?
Типа чтобы полноценно юзать из ИДЕ надо сперва собрать (как и для clang-db)?
10  Qt / Qt-инструментарий / Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна : Июль 06, 2019, 23:22
Не, погодка хреновенькая, мои все спят, а я с пивком сижу, мне хорошо.. Улыбающийся))

ЗЫ: Это я наверно задолбал... Улыбающийся))

Нет, у меня всё также - погода не очень, пивко=) Что пьешь? Улыбающийся У меня la chouffe
11  Qt / Qt-инструментарий / Re: [QBS] baremetal: Хочу поддержку IAR, KEIL, SDCC тулчейна : Июль 06, 2019, 21:22
Я там не задолбал на ревью ещё? Смеющийся
12  Qt / Общие вопросы / Re: QTreeView Win vs Linux : Июль 05, 2019, 00:11
большое кол-во данных

20-50 тыс элементов

 Смеющийся Смеющийся Смеющийся

По сабжу, следует начать с qTreeView->setUniformRowHeights(true);
13  Qt / Установка, сборка, отладка, тестирование / Re: qDebug : Июль 05, 2019, 00:09
Небось где-то уже задается формат
14  Qt / Qt-инструментарий / Re: QtCreator не работает в (K)Ubuntu 14 и не только : Июль 03, 2019, 00:57
А, фритайп нужен свежий, да. Попробуйте выковырять из нового пакета и подложить Креатору в либ.
Может, он с rpath собран.
Но да, проблема фритайпа-одна из-за которых я пересобирал Qt. Ещё там дбас может не работать и чо-то ещё, запамятовал.
Фишка в том, что они апнули свою билдферму при переходе на 5.11.3 (в патч версии лол).
Раньше у них собиралось все на RedHat7.4, теперь хз.
Я в итоге собираю Qt на центоси 7.4 максимально приближено к тому что было раньше.
Это позволяет запускаться на старых линуксах.
Но прикол в том что кутеха из инстоллера точно также не работает на свежих линуксах - в suse tumbleweed неподходящие либы OpenSSL и QNetworkAccessManager не оч работает с https
15  Qt / Qt-инструментарий / Re: QtCreator не работает в (K)Ubuntu 14 и не только : Июль 02, 2019, 16:27
Что значит "не запускается?" Нет библиотек каких-то?

Это известная проблема линуксов - невозможно сделать дистрибутив, который бы работал на всех платформах. Надо либо тащить полсистемы с собой, либо юзать системные пакеты. Qt тащит только маленький кусочек (icu), а остальное пытается юзать системное. "Угадать" какой микс библиотек в системе в общем случае невозможно.

Вот как раз сейчас пересобираю Qt на centos 7.6 чтобы работало у клиента=)
Страниц: [1] 2 3 ... 190

Страница сгенерирована за 0.059 секунд. Запросов: 23.