Dmitry
сделал
Tserial_event::~Tserial_event()
{
int i;
if (thread_handle!=0)
WaitForSingleObject(thread_handle, 2000);
thread_handle = 0;
_endthreadex(0);
теперь вылетает
Exception thrown at 0x0251708A (MSGFMT.DLL) in PDS.EXE: 0xC0000005: Access violation reading location 0x82530008.
судя по трейсу, внутренняя либа для гуя
даже если не стартовать ту нить
🦥Alex Fails
thread_handle - это член данных Tserial_event?
Dmitry
class Tserial_event
protected:
HANDLE thread_handle; // ...
Dmitry
даже если сделать
if (thread_handle!=0)
WaitForSingleObject(thread_handle, 2000);
thread_handle = 0;
//_endthreadex(0);
TerminateThread(thread_handle, 0);
CloseHandle(thread_handle);
тот же виолейшн
🦥Alex Fails
так..
🦥Alex Fails
ща
🦥Alex Fails
момент
🦥Alex Fails
вообще лучше так не закрывать thread
🦥Alex Fails
если без закрытия хендла, то что происходит (прости, я чутка торможу)
Dmitry
у меня либа подгрузилась и не хочет освобождаться. поэтому последнее сообщение может быть неверным (студия не скопировала в каталог)
🦥Alex Fails
а FreeLibrary(hLib) не пашет?
Square
https://ru.stackoverflow.com/questions/529838/%D0%98%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-ifilter-%D0%B8%D0%B7-istream/531822#531822
е
Square
вот описание моего кейса если чо
Dmitry
так у меня нет доступа к коду программы. я либу пишу. (там программа в процессах висела и не отдавала)
а чуть выше в коде ошибка — thread_handle = 0; CloseHandle(thread_handle);
а вот так можно делать?
MyDsimModel *self;
VOID MyDsimModel_SerialEventManager_wrapper(uint32 object, uint32 event)
{
self->SerialEventManager(object, event);
}
MyDsimModel::MyDsimModel() {
self = this;
com = new Tserial_event();
com->setManager(MyDsimModel_SerialEventManager_wrapper);
com_error = com->connect("\\\\.\\COM50", 57600, SERIAL_PARITY_NONE, 8, true);
}
VOID MyDsimModel::SerialEventManager(uint32 object, uint32 event)
{
}
в рантайме ругается на
Exception thrown at 0x549E1099 (ProteusBridge.dll) in PDS.EXE: 0xC0000005: Access violation reading location 0x00000000.
в строке
self->SerialEventManager(object, event);
🦥Alex Fails
нулевой указатель..
🦥Alex Fails
откуда он берется
Dmitry
Dmitry
ставлю бряк. он на нём останавливается.
делаю два (не понятно почему два) шага дебагера — вываливается исключение
на первом шаге он никуда не уходит со строки
🦥Alex Fails
скорее всего, там какой-то геттер срабатывает
🦥Alex Fails
или оператор ->
🦥Alex Fails
попробуй F11 пройтись
🦥Alex Fails
+ дизасм код
Dmitry
и эта штука в разных частях кода вылезает.
чуть раньше было тоже самое на
com->connect("\\\\.\\COM50", 57600, SERIAL_PARITY_NONE, 8, true);
шаг внутрь и память ломается.
вытащил в конструктор — как бы прошло, но вылезло в другом месте.
походу я что-то где-то неправильно более глобально делаю
а в дизасм я не умею
=(
🦥Alex Fails
надо попробовать data breakpoints
🦥Alex Fails
которые срабатывают, если данные в ячейке памяти меняются
Dmitry
по F11 не могу выйти — эхепшн.
но перешёл по стеку выше.
там вызов
if (manager!=0)
manager((uint32) this, SERIAL_CONNECTED);
и в this лежит нормальный адрес (который и пришёл на картинке слева)
Square
Square
попробуй профайлер какой нить
Square
интеловский анализатор поставь. он крутые отчеты строит
🦥Alex Fails
🦥Alex Fails
_CrtSetDbgFlags
🦥Alex Fails
И включить проверку на выделения/освобождения памяти
Dmitry
какая-то фигня. чеки ещё не включил.
вылетало на setmanager'e
вернул в деструктор
TerminateThread(thread_handle, 0);
CloseHandle(thread_handle);
вылетать перестало.
но иногда вылезает окно с виолейшном. раньше когда кликал там ОК — всё закрывалось.
теперь же, походу, TerminateThread его само закрывает и всё работает дальше.
правишь в одном месте — ошибки меняются в другом
Square
🦥Alex Fails
🦥Alex Fails
я всегда включаю в debug-сборке проектов на максимально параноидальных настройках (обнаружить утечки, повреждения и пр.)
Dim
всем ку
Dim
нужен прогер
есть список задач на различные темы. нужно решить хотя бы несколько.
подробнее тут
https://www.dropbox.com/sh/v5pm7b6n06de8fm/AACnXG-FGtmA-xz13nSQsq2Va/8c93cfeb930d1c94/Список задач на экзамен.pdf?dl=0
готов заплатить адекватную цену, т.к. это единственный вариант не поиметь проблем с универом
заказчик: @jonsiros
ivario
Dim
телеграм ссылку обрубил
https://www.dropbox.com/sh/v5pm7b6n06de8fm/AACnXG-FGtmA-xz13nSQsq2Va/8c93cfeb930d1c94/
ivario
Dim
хм..
Dim
https://www.dropbox.com/sh/v5pm7b6n06de8fm/AACnXG-FGtmA-xz13nSQsq2Va/8c93cfeb930d1c94/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%20%D0%BD%D0%B0%20%D1%8D%D0%BA%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD.pdf?dl=0
Sergey
Я б сделал, если б диплом не висел
ivario
Алдар
Пусть сам делает)
Алдар
там ещё в предметной области надо разбираться
Ned
Ну нах такое кодить, он нас чё, за умных принял?
🦥Alex Fails
😂
Ned
Он мне за поумнение состояние заплатит.
Ned
Дорого нынче такое кодить
🦥Alex Fails
👍
Anonymous
А можно поподробнее?
Anonymous
Есть в открытом доступе?
Anonymous
У меня самого хуже
🦥Alex Fails
Да
🦥Alex Fails
Sprintf
🦥Alex Fails
Но лучше snprintf
🦥Alex Fails
Моя любимая функция)
Ned
Nikolay
ух ты
Nikolay
шестёрку выпускают
🦥Alex Fails
дык уже давно 6-ка есть
$continue$
Может 5.4 stable version
$continue$
А, 6.1 beta, как то так
🦥Alex Fails
Stanislav
Stanislav
какая бета
$continue$
Всего лишь предположения 😊
$continue$
Тогда GNU считать не умеет (мистика какая то)
$continue$
Видимо идею у окон позаимствовали
arisudesu
сначала подумал, что вы про андроид
arisudesu
5.4
Roman
Книжка Праты по сям нормальная для новичка?
🦥Alex Fails
Да
🦥Alex Fails
Если есть, скинь сюда, для всех желающих
Roman
Roman
Хотел на озоне заказать, но от таких цен думаю и в электронке прочитаю :)