forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Болтовня (http://forum.boolean.name/forumdisplay.php?f=25)
-   -   Компилер глючит? (http://forum.boolean.name/showthread.php?t=798)

Diplomat 21.03.2006 18:24

Доброе время суток!
Очередной крик души. Сегодня днем, не к ночи будет сказано, я столкнулся с леденяшшой кровь багой, повергшей наши ряды в моём лице в состояние крайнего разброда, шатания, катарсиса и прочего ужоснаха.

Итак, дано:
-Рабочий код на 6000+ строк (точнее не считал).
-Блиц3Д вер.1.94
Требуется:
-Скомпилировать код в ЕХЕ-шник.
Решение:
-Давлю "Криёйт эхекутабль".

...И вот тут начался тот самый КОШМАР-Р-Р с большой буквы "У"(жос)...

Код радостно компилится, и даже запускается. Но (гыхх!) в начале главного цикла столь же радостно вылетает, из вежливости даже не сопровождая сеё событие всякими пошлыми "Мемори аксесс"... и так на двух машинах...

И, шо характерно, Установка ЕХЕ-шнику режима совместимости с Видной-95,98 или Ме - заставляет таки его снова заработать, но звук в проге начинает хрипеть, заикаться и всячески дебоширить.

Сижу теперь и тупо качаю к Блицу кучу разнообразных апдейтов, а к железу- не меньшую поленницу дров. Ждите новых сводок с фронта... %))

P.S. С кем-нибудь нечто подобное бывало? Просто интересно: может это какой-нибудь новый критический баг Блица, вроде "террайновой нетерпимости"? Ж)

jimon 21.03.2006 18:47

ето баг не совместимости софта 6 летней давности с современыми мелкософтскими мега DLL :)

tormoz 21.03.2006 18:51

Дык попробуй на 1.96 скомпилить. или откатывайся к 1.91 (сам на ней сижу)

pax 21.03.2006 18:53

У меня краш был при загрузке большого Меша (более 100000 треугольников) командой LoadMesh на операторе RenderWorld, а с оператором LoadAnimMash не было... других крашев у меня особо небыло, или я просто забыл про них...

pax 21.03.2006 18:55

Цитата:

Originally posted by tormoz@21.3.2006, 18:51
Дык попробуй на 1.96 скомпилить. или откатывайся к 1.91 (сам на ней сижу)

А где взять 1.96?

pax 21.03.2006 19:08

Все нашел. Спасибо что сообщили о выходе новой версии.

Diplomat 21.03.2006 22:23

Итак, очередная с-водка-с с фронта-с.

Версии Блица 1.91, 1.94, 1.95 и 1.96 ведут себя абсолютно одинаково: то есть совершенно никак себя положительно не проявляют. Сейчас ищу любимую 1.85-ю, но "задается мне, Тото, мы больше не в Канзасе..." :)
Переустановка дров тоже ничего не решает.
Переустановка Блица- тоже.
Смена ИДЕ (да, я и этим занимался) - не исправляет, но
замечательные результаты показывает наблюдение за Дебагером в новом ИДЕ. При первом (после перезагрузки машины) запуске неоткомпиленого кода, он стартует, но при входе в главный цикл вылетает на безобидном ЁнтитиПике с МемориАксесом. Если убрать этот Пик, он вылетает на другом, причем находящемся в функции, которая на данном этапе вообще не вызывается и вызываться не может! Если убрать и его- что-ж, начинает выдавать МемориАксесс вообще без всяких указаний на причину. При повторных запусках- всё чудесным образом начинает работать, но после завершения программы- с небольшими промежутками вылезают ДВА МемориАксесса и затем после паузы- матюки Винды в адрес компилера "блитзцц.ехе": "Сообщите об этом деле в Мелкософт"...
Картина абсолютно одинакова на двух совершенно различных машинах.

Никто не знает, есть ли в Блице какие-нибудь ограничения, вроде количества локальных/глобальых переменных, инклюдов, типов?..
Не было ли багов с создаваемыми повертексно мешами? (количество полигонов куда меньше 65000) Может были какие-то глюки в ЁнтитиПиках?

jimon 21.03.2006 22:42

я один раз заставил блиц инвертнуть все нормали - на обсолютно всех обектах, помойму камеру к пивоту припарентил как то

могу дать все промежуточные версии.. 1.86,1.87,1.88,1.89,1.90 и тд
:)

Diplomat 22.03.2006 00:03

Баг я нашел.
Ребята, огромное спасибо всем, кто откликнулся и помогал!
Извините за то, что вылез сюда до того, как всё решил.

Как оказалось, ничего общего с ЁнтитиПиками, ЁнтитиВизиблами да и Ентитями вообще он не имел. Глючил (догадайтесь-ка с трех раз!)- MouseHit. Строка в общих чертах выглядела следующим образом:
Код:

IF KeyHit(ControlKey) OR MouseHit(ControlKey-237) THEN
, где КонтролКей- некая переменная, хранящая сканкод клавиши от 1 до 237 или клавишу мыша от 238 (1) до 240 (3). Таким образом я хранил данные конфигурации клавиш игры.
Такую схему я использовал и в СтилВинде, однако заглючила она лишь сейчас.
Воссоздать баг на тестах не удалось, поэтому я предполагаю, что непереносимость МаусХит-а к отрицательным значениям появляется лишь в результате нагромождения кода: равно как и креши стандартных террайнов.

Возможно, у кого-нибудь будут комментарии.
Может быть, кто-то решит задать вопросы.
Может быть, этот идиотский вопрос заслуживает места в ФАК-е, чтоб никто больше не поседел, пытаясь решить несществующую загадку.

Но в остальном- тема себя исчерпала. Можнро гасить. Еще раз спасибо.

P.S. Зато теперь у меня есть целая коллекция апдейтов для Блица: могу продавать по спекулятивным ценам... :)))

tormoz 22.03.2006 01:36

Diplomat

Ну ты и извращенец ! :lol:
Загнать в MouseHit переменную - это очень сексуально ! :ok:

игру то покажешь ? ;)


Часовой пояс GMT +4, время: 00:18.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot