Две сказки…

Волею случая пришлось мне сделать большую глупость. Пришлось переписать все сетевое взаимодействие из Индикатора на потоках. Как-то с горем пополам отладил его на своей рабочей машине (WinXP). Но приложение должно работать на Win98. Как выяснилось позже, оно там не работает. Ладно. Пересел за 98. Нарисовал там Delphi. Поставил все необходимоеначал отлаживать. Дальше началась сказака под названием “Тысяча и один BSoD” по мотивам легенды о Бермудском треуголнике. Потоки то исчезают, то появляются. Отладке все это не поддается совершенно. Как только выпадаю по бряку в “сетевом” потоке, он теряется. Продолжение выполнение часто заканчивалось тем самым BSoD’ом. Если бряк на основном потоке, то дочерные не саспендятся и все разом благополучно сваливается в BSoD как только дочерный поток хочет что-то сказать основному потоку. На XP таких проблем вообще не было. Как-то там все тих мирно так проходило. Никто нигде не терялся. Ничего не отваливалось…
Я восхищаюсь гипотетическим программистом, которому удавалось нормально писать многопоточные приложения под Win98.

Но до этого имел место быть опус “О поисках Святого winsock2.dll”. Приложение долго вылетало по Runtime Error 217, который вылезал сразу после ошибки 1157 (это когда приложение не может выполняться, бо какой-то либы не нашло). Так вот. Сначала я перевернул полсети в поисках обновления сокетных либ (это единственная разница в требованиях можду этой и предыдущей версиями Индикатора) на Win98. Потом перекопал полсайта M$. Перевернул вверх дном ихний FTP. Нашел только обновление на Win95, которое очень упрямилось вставать на Win98. Ну, ниче… И не таких обламывали… В общем, выковырял я либы. Положил к приложению и тогда началась уже возня с потоками. Когда я увидел, что приложение с горем пополам начинает работать когда ему подложить весь комплект winsock2 (десятка два файлов), я задался вопросом “Обновления нету и либ нету… Как же так?”. Поиск дал неожиданный вариант. Все эти либы есть, но там, где их никто не найдет. В Win98 есть такой юморной момент. Сразу после установки у нее в PATH нету c:\windows\system. Но именно там лежат либы от winsock2. Так сложилось, что я именно их пользую для этого самого сетевого взаимодействия.

Вот такие две страшные сказки мне пришлось пережить…

2 Responses to “Две сказки…”


  • Опыт - сын ошибок трудных :D
    А.С. Пушкин

    winsock2.dll можно найти в разном софте, тот же guildFTPd. Мелкософт оффициально 98 не поддерживает, потому такие палки в колёса.

    • Не думаю, что c:\windows\system убрался из PATH после того, как прекратилась поддержка. Тем более, что инсталляхе уже лет пять, наверное. И это лицензиооный диск.
      Так-что поддержка тут ни при чем.

Leave a Reply