|
2 / 2 / 0
Регистрация: 07.04.2016
Сообщений: 298
|
||||||
wxWidgets + многопоточность = ошибка сегментирования08.08.2023, 08:16. Показов 13646. Ответов 6
Метки нет (Все метки)
Здравствуйте.
Имеем: 1. wxWidgets 3.2.2; 2. windows 10 x64; 3. debian 11.5 (virtualBox); 4. многопоточность (std ); 5. socket tcp\ip. Что не так: 1. В виндовс работает на линуксе нет; 2. В линуксе при запуске через терминал выдает ошибку "ошибка сегментирования" Описание: Что делал см. ниже. Кликните здесь для просмотра всего текста
Изначально прогу писал на винде, все запускалось, потом этот же код перенес на линукс и при запуске стал получать ошибки, некоторые устранил, но одну(если она одна) устранить на данный момент не понимаю как. Дело касается многопоточности. В программе использую потоки из пространства имен std а не виджетовский класс. Прочитав мануал, было сказано делать многопоточность так, что бы графику обновлял\занимался основной поток. Как мне кажется(хотя есть вопросы). я так и сделал. Запускаю прогу через терминал и вижу сообщение об ошибке сегментирования, убил весь вечер пересматривая циклы с массивами и векторами. Вполне возможно пропустил. Но вроде все ок. Что делал: 1. Весь вечер пересматривал циклы с массивами и векторами. Вроде все ок; 2. В конструкторе в самом конце создал цикл, в котором создаются события нажатия на кнопку "присоединиться", далее после обработки этого события вызывается метод, в котором создается соединение, включаются\отключаются кнопки и устанавливается текст: Говнокод этого метода:
4. Если раскомментировать в "else if (codeCheck == 0)" 3 строки, в которых происходит установка значений в массиве, а остальные не раскомментировать, то прога стабильно не запускается и пишет "ошибка сегментирования". Видимо я неправильно понял как использовать многопоточность... Вопросы: 1. Где я допустил ошибку(а если она в этом методе, то и в других) ?
0
|
||||||
| 08.08.2023, 08:16 | |
|
Ответы с готовыми решениями:
6
wxWidgets: 2 х wxTextCtrl = ошибка завершения программы Странная ошибка компиляции проекта Code::Blocks, wxWidgets
|
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|
| 12.08.2023, 12:03 | |
Сообщение было отмечено Palich как решение
Решение
Palich, с многопоточностью (если конечно действительно в ней дело, а то не факт) чтобы найти ошибку нужно видеть весь контекст использования разделяемых ресурсов, а его вы не предоставили. Вот почему, например, нет метода sendPackage? Он ведь явно что-то делает с данными, которые вы подготовили в проблемной ветке условия.
В этом коде я пока вижу только ошибку дизайна. У вас и GUI и низкоуровневая работа с сетью и какая-то логика - все в одном методе. Это очень плохо и поэтому вам так сложно программировать и находить ошибки. По-хорошему работа с сетью - это должен быть отдельный класс, который вы отдельно оттестируете, определите для него публичные контракты и в соответствии с ними будете его использовать в какой-то логике. Сама же логика должна быть отделена от GUI: сможете написать так, чтобы вашу логику можно было в другую GUI-подсистему сунуть, считайте что цель достигнута. А все это к чему? К простоте. Чем меньше зависимостей между компонентами программы, тем проще их тестировать и исправлять в них ошибки.
0
|
|
|
267 / 199 / 30
Регистрация: 26.11.2022
Сообщений: 866
|
|
| 13.08.2023, 19:45 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 07.04.2016
Сообщений: 298
|
|
| 23.08.2023, 10:04 [ТС] | |
|
спасибо за ответы, пока не могу вернуться к этой проблеме. Как вернусь, напишу что сделал и что получилось.
0
|
|
|
2 / 2 / 0
Регистрация: 07.04.2016
Сообщений: 298
|
||||||||
| 21.09.2023, 23:37 [ТС] | ||||||||
![]() В общем сделал, все запускается, работает. Пока делал, нашел пару ошибок, о которых бы и не вспомнил. Добавлено через 3 минуты
0
|
||||||||
|
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
|
|||||
| 22.09.2023, 12:21 | |||||
Но я даже не об этом говорил, а о том, что у вас в принципе и логика, и сеть и GUI перемешаны в одном методе. Естественно точки заимодействия логики с GUI все равно останутся, но в идеале это взаимодействие должно быть локализовано, а не происходить в рандомных частях выполнения логики.
0
|
|||||
|
2 / 2 / 0
Регистрация: 07.04.2016
Сообщений: 298
|
|
| 22.09.2023, 14:22 [ТС] | |
|
0
|
|
| 22.09.2023, 14:22 | |
|
Помогаю со студенческими работами здесь
7
Ошибка в коде (Ошибка сегментирования (core dumped) Ошибка сегментирования ошибка сегментирования
Ошибка сегментирования. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|