Comments.blogs

LUA для С#

18 окт 2006 08:32
0
(Текст записи скрыт. Показать...)
Хочется кого-нибудь или что-нибудь изгрысть до крови своей/чужой, потому что сил уже нет боротся с сабжем.
Положение усложняется тем, что понять не могу у кого кривые руки, у меня или у того кто писал LuaInterface версии 1.4.0.0.
На версии 1.3.0.0 на лог смотреть было не возможно спокойно.
Блуждающие ошибки Invalid Argumets Call, ошибки при подстановке значений, запихивание в функцию вместо числа строку. Бред-таки.
При этом в один кадр может быть все хорошо, в следующий ошибки, потом 10 кадров без них потом опять и т.д. никакой нормальной логики в этом совершенно не прослеживается.
С переходом на 1.4.0.0 часть ошибок ушла. Но осталось одна, опять таки блуждающая.

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

При этом она может возникать совершенно в любом месте скрипта, на любой функции и в любой промежуток времени, а может и вобще не возникать. Хуже прикол в том, что не редко система может вообще вся впасть в ступор на вызове collectgarbage с этой самой ошибкой.
Где копать понятия не имею. В скриптах поубивал все возможные глобальные переменные. Остается только принудительны Dispose объектов в C#.

Может кто боролся с этим ацким змием? Подскажите куда копать и в чем может быть баг.

PS: сейчас данную ошибку просто напросто опрокидываю, зато система работает, но просто напрягает что называется записи в логе, ну и тот факт что все таки иногда может все встать в ступор из-за collectgarbage
Ваш комментарий
Имя:
E-Mail:
Введите символы,
которые написаны
на картинке
captcha
Отправлено 18.10.2006 в 10:23
Отвечает на сообщение 155480
0
Мы боролись, потратили около 3 недель чтобы на основе C# версии написать свой враппер на c++. Из засад помню главное зло в драке двух гарбаж коллекторов( луашного и managed, т.к. манагед запускался в середине кадра и случался п..дец ), излечилось путем вызова GC манагед кода в начале кадра - что то вроде такого:
GC::Collect();GC::WaitForPendingFinalizers();
А по поводу кривых рук: насколько я понял человек который писал luainterface получил от MS какую то награду и у него все неплохо задумано и сделано, но для простеньких задач...А мы полностью редактор написали на lua поэтому у нас вышеобозначенные ошибки сыпались со страшной силой.
UPD: Там еще вроде такая кухня была - можно было "Якорить" обжекты луашные чтобы managed коллектор их не трогал - но почемуто это сильно не помогало:(, хотя в коде до сих пор есть.
Отправлено 18.10.2006 в 10:35
Отвечает на сообщение 155481
0
Хм, ясно видимо тоже самое происходит и у меня потому что
я тоже не совсем простенькие вещи на нем творю. Кстати да простой скрипт не вызывает таких ошибок.
Буду копать в заданном направлении. Спасиб за сведения.
Отправлено 18.10.2006 в 13:53
Отвечает на сообщение 155485
0
Согласен с Константом Сохарев, но ещё может быть трабла с синхронизацией потоков (если приложение многопоточное).
Я сталкивался с похожей проблемой когда у меня было 2 потока и они были неправильно синхронизированы - я грешил на отладочный менеджер памяти и на GC так как в релизе количество падений уменьшалось раз в 10
(я неосознано вместо
SyncMutex.WaitOne()
// Do smth
SyncMutex.Release()

написал

lock(SyncMutex)
{
 // Do smth
}

что совершенно разные вещи
)
Comments.blogs
Списки доступа
  • Подписчики [789]
Права доступа
У обсуждений в этой группе различные ограничения доступа.
Пользователи имеют персональные права доступа к обсуждениям.

Copyright © 2020 ООО "ДТФ.РУ". Все права защищены.

Воспроизведение материалов или их частей в любом виде и форме без письменного согласия запрещено.

Замечания и предложения отправляйте через форму обратной связи.

Пользовательское соглашение