Page 2 of 2

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 10:54
by 2useven10

Latest post of the previous page:

Архив перезалит.
Кроме пропущенного файла - s[n]printf, sscanf A и W варианты.
PS: фидбек лучше сразу, пока не забыл, что там делалось.

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 18:46
by Dec
2useven10,

Какая то непонятная для меня магия. Проект собирается, но для 32 битной версии при попытке LoadLibroary полученной библиотеки где внутри происходит AV, и GetLastError возвращается либо ERROR_DLL_INIT_FAILED (на Windows 10), либо ERROR_NOACCESS (на Windowx XP и Windowx 7). При этом 64 битная версия работает нормально.

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 19:00
by HaRT
Dec wrote: Mon 11 Dec, 2017 18:46внутри происходит AV
Соберите с отладочной информацией, чтобы образовался одноимённый PDB-файл, подложите его рядом с его DLL, запустите в отладчике (например, Visual Studio) — велики шансы, что там будет нормальный Call Stack.

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 19:23
by Dec

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 19:27
by HaRT
Dec wrote: Mon 11 Dec, 2017 19:23
Судя по RtlpWaitOnCriticalSection, это не тот поток. Этот поток чего-то ждёт, а упал, вероятнее всего, какой-то другой. В панельке Output нет намёка, какой именно?

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 19:35
by Dec

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 21:11
by HaRT
Dec wrote: Mon 11 Dec, 2017 19:35
Думаю, отладку через форум пора прекращать. Нужно залезать с головой. Но я не готов.

Использование исходников FAR в стороннем продукте

Posted: Mon 11 Dec, 2017 23:04
by 2useven10
Dec, Завтра попробую сделать вариант с более простой (предыдущей) версией vcrt_fix, если не поможет присылайте проект на котором тестируете, попробую посмотреть у себя.

Использование исходников FAR в стороннем продукте

Posted: Tue 12 Dec, 2017 06:30
by 2useven10
Ну LoadLibrary я и сам могу сделать... Думаю сегодня сделаю, чтобы работало, если будет полчаса свободного времени.

Использование исходников FAR в стороннем продукте

Posted: Tue 12 Dec, 2017 14:41
by 2useven10
Dec, Всё оказалось банально. Есть 2 опечатки.
Главная -- в .vcxproj надо добавить минус, чтобы получилось: threadSafeInit-
Вторая -- в .def файле пропущена ф-я apiGetPathRoot

Использование исходников FAR в стороннем продукте

Posted: Wed 13 Dec, 2017 21:17
by Dec
2useven10, Подтверждаю, проблема исчезла. Спасибо. Буду тестировать. И правильно ли я понимаю, что ConvertPath не является потокобезопастной, в отличие от остальных функций?

Использование исходников FAR в стороннем продукте

Posted: Wed 13 Dec, 2017 21:29
by 2useven10
ConverPath в этой реализации не является.
Инициализация в FarKey... тоже может быть проблемной.
Может что-то ещё, но допилить вроде бы несложно.

Использование исходников FAR в стороннем продукте

Posted: Wed 13 Dec, 2017 21:37
by Dec
Проблемы нет, я могу просто вызывать эти функции с защитой через критические секции.