Программа падает без объяснения причины

Все о MMCodingWriter на русском

Moderator: kolyandex

Post Reply
Minu
Posts: 5
Joined: 08 Sep 2024, 19:49

Программа падает без объяснения причины

Post by Minu » 16 Sep 2024, 13:50

Всем доброго времени суток! Мне требуется помощь коллективного разума, может кто-то сталкивался, может сам автор увидит - подскажет.
Купил я значит шнурок mini-vci на алиэкспрессе. Установил драйвера на ноутбук, по всем инструкциям, FTDI версия 2.12.36.4. В диспетчере устройств появились USB Serial Port (COM3) и USB Serial Converter, без ошибок. Закинул либу MVCI32.dll на диск С, в реестр прописал.
До этого момента всё хорошо, а проблема начинается когда я в MMCW нажимаю кнопку Подключиться. На секунду начинает заполняться прогресс-бар, после чего программа без предупреждения закрывается. Лог выглядит так:

Code: Select all

16:32:53.8995513	Start...	TO_FILE_ONLY
16:32:53.8995513	Start detect 2534 devices	TO_FILE_ONLY
16:32:53.8995513	Found: XHorse - MVCI :: C:\MVCI32.dll	TO_FILE_ONLY
16:32:54.0268310	Operating system: Майкрософт Windows 11 Домашняя для одного языка 64-разрядная 22631	TO_FILE_ONLY
16:32:55.1598123	CPU: 11th Gen Intel(R) Core(TM) i5-1155G7 @ 2.50GHz 4 cores 8 threads.	TO_FILE_ONLY
16:32:55.1598123	Application loaded, current version is 0.0.2.3	TO_FILE_ONLY
16:32:58.4808528	TNDA	TO_FILE_ONLY
16:32:58.4808528	LE: Logs\16.09.2024 16-32-53.txt Процесс не может получить доступ к файлу "C:\Users\minu-\OneDrive\Рабочий стол\Lancer\MMCodingWriter\Logs\16.09.2024 16-32-53.txt", так как этот файл используется другим процессом.	TO_FILE_ONLY
16:33:00.6048584	Current version: 0.0.2.3	TO_FILE_ONLY
16:33:00.6048584	Actual version: 0.0.2.3	TO_FILE_ONLY
16:33:01.8005199	Connect pressed.	TO_FILE_ONLY
16:33:01.8005199	Exchanger start... Connection type: J2534	TO_FILE_ONLY
Помогите люди добрые! У кого какие мысли есть?)

Minu
Posts: 5
Joined: 08 Sep 2024, 19:49

Re: Программа падает без объяснения причины

Post by Minu » 17 Sep 2024, 13:05

Поставил на VirtualBox винду 7, 32 бита. Прокинул ей usb устройство XHorse M-VCI. Прогресс пошёл:

Code: Select all

15:20:48.7599987	Connect pressed.	TO_FILE_ONLY
15:20:48.7697156	Exchanger start... Connection type: J2534	TO_FILE_ONLY
15:20:49.0903733	Lib loaded: C:\Program Files\XHorse Electronics\MVCI Driver for TOYOTA TIS\MVCI32.dll	TO_FILE_ONLY
15:20:49.0903733	Name: XHorse - MVCI	TO_FILE_ONLY
15:20:49.0903733	Vendor: XHorse ELECTRONICS Co.,Ltd.	TO_FILE_ONLY
15:20:50.4118717	Firmware version: J2534 MINIV1.03	TO_FILE_ONLY
15:20:50.4118717	DLL version: MVCI J2534 DLL v1.4.7	TO_FILE_ONLY
15:20:50.4118717	API version: 04.04	TO_FILE_ONLY
15:20:50.7422463	Send: 620:1092	TO_FILE_ONLY
Итд, сейчас без подключения к машине пробую.
То есть, как мне кажется, MMWC падает при попытке загрузки библиотеки MVCI32.dll, до общения с usb дело не доходит.
С чем это может быть связано? Брэндмауэр и дефендер отключил - никак не повлияло. Наверно какая-то особенность 11й винды.
Да, я сейчас наверно смогу решить свои вопросы через виртуалку, но хотелось бы разобраться до конца. Уважаемый kolyandex, если есть возможность - выйдите на связь, я могу помочь с тестами, а вы возможно улучшите совместимость с современными ОС.

User avatar
kolyandex
Администратор
Posts: 1425
Joined: 08 Dec 2019, 13:33
Location: Novosibirsk
Contact:

Re: Программа падает без объяснения причины

Post by kolyandex » 17 Sep 2024, 13:19

Боюсь ничем не помогу. Пробуйте другой драйвер для шнурка. У всех все работает уже лет 5.
In backup we trust.

Minu
Posts: 5
Joined: 08 Sep 2024, 19:49

Re: Программа падает без объяснения причины

Post by Minu » 17 Sep 2024, 19:14

Сходил к машине, прописал кодинг через виртуалку. До последнего грешил на китайский брак mvci, но теперь понятно что проблема не в железе.
Николай, я правильно понимаю, что исходники программы вы не раскрываете?
Мне просто интересно что происходит между строчками "Exchanger start" и "Lib loaded", что вызывает падение. Как будто в логе не хватает сообщения типа "Не удалось загрузить библиотеку потому что... Access denied, например, код 3". Если либу удалить с диска, то программа честно пишет, что библиотека не найдена. А тут - ничего, очень странно.
Есть предложение - сделайте тестовую сборку с построчным логированием, я запущу её у себя, тогда станет понятно какая конкретно команда вызывает падение.
Если вам некогда этим заниматься - напишите хотя бы последовательность подключения, PassThruConnect / PassThruOpen / что-то ещё, или подскажите может где-то есть доки по этому протоколу. Я может попробую сам дёрнуть эти функции и сравнить ответы на W7 и W11.
Если что, можете писать в телегу https://t.me/minu_moto

User avatar
kolyandex
Администратор
Posts: 1425
Joined: 08 Dec 2019, 13:33
Location: Novosibirsk
Contact:

Re: Программа падает без объяснения причины

Post by kolyandex » 17 Sep 2024, 21:28

Minu wrote:
17 Sep 2024, 19:14

Мне просто интересно что происходит между строчками "Exchanger start" и "Lib loaded".
Load library происходит. Указатели на dll функции определяются.
In backup we trust.

Minu
Posts: 5
Joined: 08 Sep 2024, 19:49

Re: Программа падает без объяснения причины

Post by Minu » 01 Oct 2024, 21:34

Нашёл решение. Конкретно мне на 64-битных W10 и W11 помогло следующее:
  1. Закинуть библиотеку в MVCI32.dll в папку C:\Windows\SysWOW64. Обязательно туда, из других папок она отказалась грузиться. Библиотека драйвера ftd2xx.dll должна лежать там же.
  2. Прописать в ключе реестра HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\PassThruSupport.04.04\XHorse - MVCI строковый параметр FunctionLibrary равный C:\Windows\SysWOW64\MVCI32.dll
  3. Перезагрузить компьютер. Обязательно, иначе изменения не подействуют.

Minu
Posts: 5
Joined: 08 Sep 2024, 19:49

Re: Программа падает без объяснения причины

Post by Minu » 01 Oct 2024, 21:53

Почему же сразу всё не заработало? Есть ряд причин.

Для начала скажу что, действительно, при попытке загрузки библиотеки процесс приложения экстренно завершался, не выдавая наружу никаких дополнительных сообщений. Проверил я это создав Java приложение состоящее из одной строчки System.load("C:\\MVCI32.dll"). Приложение завершалось на этой строчке, так же как MMCW. Даже никаких исключений не выкидывало. Хотя другие библиотеки, та же ftd2xx.dll загружались нормально.

Я пробовал разные драйверы, но так как на W10 и W11 родные установщики не работают, то установка происходила в полуручном режиме, с распаковкой msi, или из архивов найденных в интернете. Из-за этого MVCI32 попадала то на диск С, то в Program Files, то в Windows. В моём случае последний вариант (Windows\SysWOW64) был рабочий, но я не перезагружал комп после переустановки, а это оказывается было необходимо.

Другая причина - procmon.exe. По работе я часто использую системную утилиту Process Monitor и удивительным образом, если procmon.exe был хоть раз запущен после старта windows, то MVCI32 перестаёт загружаться. То есть буквально: запускаю в яве System.load - работает, запускаю и закрываю procmon.exe, запускаю System.load - не работает.

Объяснить всё это какими-то рациональными причинами я не могу, знаний не хватает. Как папка SysWOW64 и procmon.exe могут влиять на загрузку библиотеки - я хз, просто какое-то шайтанство. Скорей всего сама библиотека как-то хитрожопо написана, отслеживает окружение и завершает процесс, если ей что-то не нравится. Но разбираться в ней, дизассемблировать, нет времени и желания, кое-как работает и ладно.

Post Reply