Russian Qt Forum
Ноябрь 26, 2024, 01:34
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Странная ошибка SIG SEGV
Страниц:
1
2
[
3
]
4
5
6
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Странная ошибка SIG SEGV (Прочитано 35597 раз)
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #30 :
Март 23, 2012, 16:00 »
программа создает поток отправляет запрос. Если созданных потоков меньше 32, то создает опять и т. д. потоки возвращают ответ и не удаляются а запихаются в стек. Потом программа смотрит - есть в стеке потоков и меньше 32 еще не вернули ответ - берет из стека поток и снова отправляет запрос и т. д.
Записан
Bepec
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #31 :
Март 23, 2012, 18:08 »
Первое впечатление если чесно отвратное. Надо же других так неуважать, чтобы такую подлость с самого начала творить
(это не обвинение, это не оскорбление, ежели обидел - извиняюсь)
Я узнал, что программа там валится просто - ОНА ВАЛИТСЯ С ПЕРВОГО ЖЕ ЗАПУСКА
32!!! окна критичных ошибок и полтора десятка предупреждений о том, что мутекс нужно сначала залочить, а потом разлочить.
Соответственно тут и появилась диллема:
Если не комментить - валится с самого начала.
Если комментить - не посылает более 32.
PS я понял логику вашей программы, не понял реализацию, переделывать вашу программу лень (тем более со стеком).
PPS счас скачаю возможно ваш новый проект и попытаюсь запустить...
Записан
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #32 :
Март 23, 2012, 18:15 »
Спасибо за критику!
"окна критичных ошибок и полтора десятка предупреждений о том, что мутекс нужно сначала залочить, а потом разлочить" - Почему у меня окна и предупреждения не валятся вообще, даже варнингов нет? Чем вы пользуетесь? У меня стандартный QT Creator из стандартного набора QTSDK.
Записан
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #33 :
Март 23, 2012, 18:16 »
Скачайте проект еще раз пожалуйста. Там та строчка закоментирована, и сделано чтоб мутекс потом разлочивался, и счетчик проходит за 32
Записан
Bepec
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #34 :
Март 23, 2012, 19:32 »
Я бы задумался, если б у меня только было. А так и у Виктора она тож валилась
Я использую VS2008 + Qt Addin.
Скачиваю
Записан
Bepec
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #35 :
Март 23, 2012, 20:55 »
Скачал запустил. Пожалел что нет второго компа - твоя прога мой i3 жрёт как мартышка семечки.
Завтра протестю. А то даже музыка заглючивает
Записан
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #36 :
Март 24, 2012, 11:07 »
Я собираю на MinGW. Под линуксом собирал. У меня не выдавало ошибок и варнингов на счет анлука мютекса. Да прога жрет все свободные ресурсы. Я для потоков пытаюсь и приритет ставить низкий (QThread::LowPriority) перед запуском. Вроде не должно все остальное глючить.
У меня, например, когда фильм смотрю, вроде нормально (HP Compaq 6720s 1,6 Core2Duo, 3 Gb RAM).
Цитировать
Скачал запустил. Пожалел что нет второго компа - твоя прога мой i3 жрёт как мартышка семечки.
Завтра протестю. А то даже музыка заглючивает Улыбающийся
Буду прееееемного благодарен!!!!!
Надежда только на Вас...
Записан
Bepec
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #37 :
Март 25, 2012, 11:29 »
В принципе тебя можно радовать - ты в своей программе портишь память
Где - незнаю, это ты сам должен найти
Проблема вылета - при парсинге URL "http://' отбрасывается "http:" и идёт поиск "//"
Вот только в момент вызова ф-ции QString.indexOf() у строки из 2 (двух) слешей из-за испорченной памяти длина где то "-1655874695" рандомно
Собственно там и выпадает программа в осадок.
Мой тебе совет - перепиши программу. (поиск порчи памяти это оочень сложное дело)
И да - советую (но не настаиваю), использовать наследование от QThread и создать 1 класс который будет отвечать за нужные тебе действия
И уж точно он не будет жрать 90% процессорного времени моего компа
update: ради достоверности ещё пару раз дождался вылетов - ты портишь память. В самых разных местах. И конечно же иногда это проскакивает, иногда рушит программу.
Порча памяти - это запись данных в некорректный участок памяти. К примеру в 26 элемент массива с 10 элементами.
«
Последнее редактирование: Март 25, 2012, 11:56 от Bepec
»
Записан
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #38 :
Март 25, 2012, 13:34 »
Спасибо! Попробую разобратся. Вы очень помогли!
Записан
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #39 :
Март 29, 2012, 11:54 »
Мне переписывать программу сложно. Я итак ее пол года переписывал уже. А теперь опять переписывать. Там столько всего...
А как вы длинну измеряли? sizeOf()?
Записан
mutineer
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #40 :
Март 29, 2012, 12:03 »
int QString::length () const
Записан
Bepec
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #41 :
Март 29, 2012, 12:12 »
У вас там портится память. То есть любое поле может измениться на любое значение.
Наиболее часто у меня вылетало именно при размере строки, но были и ошибки обращения по указателю (оказывался сдвинут в неипические дали).
Порчу памяти невозможно предотвратить заплаткой, ибо она может испортить и заплатку
Её нужно вычислить и убрать.
Да, длину я не вычислял - просто прошёл по стеку вызовов перед вылетом, смотрел данные внутри QString класса.
Записан
V1KT0P
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #42 :
Март 29, 2012, 13:59 »
Цитата: vbi от Март 29, 2012, 11:54
Мне переписывать программу сложно. Я итак ее пол года переписывал уже. А теперь опять переписывать. Там столько всего...
А как вы длинну измеряли? sizeOf()?
Как я тебя понима. Сам вот переписал программу и все круто, но при переписывании использовал только один поток. В релизе решил поставить 4 потока, так она зараза падает, хотя я везде синхронизируюсь через boost::asio::strand =).
добавлено:
Кстати а никто не в курсе, может valgrind может помочь выявить то место где происходит порча памяти? Valgrind же по сути виртуальная машина, тоесть может по ходу работы отслеживать кто и куда пишет а когда упадет просто посмотреть кто последний писал в затертую память.
«
Последнее редактирование: Март 29, 2012, 14:20 от V1KT0P
»
Записан
Bepec
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #43 :
Март 29, 2012, 14:24 »
Синхронизация тут не поможет.
Насчёт валгринда незнаю, но вроде в некоторых IDE есть возможность ставить условие на обращение к участку памяти.
PS хотя поиск порчи памяти дело неблагодаааарное.
Записан
vbi
Гость
Re: Странная ошибка SIG SEGV
«
Ответ #44 :
Март 29, 2012, 17:33 »
Я собирал программу под линуксом, тестировал валгриндом, но таких проблем там не было, программа не вылетала ниразу. Правда с валгриндом программа наааааамного медленне работает. Может завтра попробую поставлю на целый день, и посмотрим. А так все утечки, которые показывал валгринд я устранил)
Записан
Страниц:
1
2
[
3
]
4
5
6
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...