Опять грустная китовая осень - "Subnautica" сломалась.

Oct 09, 2020 05:27

Доброй всем ноченьки.


В 2015 г. я написал рассказик "Грустная китовая осень" - https://whale-roma.livejournal.com/6335.html - про то какими были осенние денёчки с 2012 г.; тогда мне было грустно потому что в апреле умерла Ирина. В этом году грустно всем - у многих нет работы, но есть долги по кредитам. Правительство Москвы лишило пенсионеров бесплатного проезда в транспорте - в качестве временной меры на время вспышки пандемии - но мы хорошо знаем что нет ничего постояннее временного и мистер Собянин попросту отказывается от части своих социальных обязательств. Мы никак не можем влиять на происходящие в стране процессы - поэтому Китиша предлагает всем читателям взять чашечку чайку и почитать третий уже по счёту рассказик про игрушечку "Subnautica". Мне нужна ваша помощь - потому что игрушечка безвозвратно сломалась !!! В августе вышло её обновление, сделавшее игру неработоспособной - оно не просто поставило крест на русской озвучке "GameVoice" но и основано на нерабочей версии движка "Unity" - этот движок пишет данные в несуществующие странички памяти компьютера; игрушечка не только вылетает сама, но и сносит драйвер графической карты. Можно долго говорить о том, что эта проблема неразрешима - я вам покажу дискуссию разработчиков "Unity" как раз на эту тему - но у других людей игрушечка работает, а значит и у Китиши должна работать.

Игрушечка для всех.
Как я уже вам рассказывал "Subnautica" нетребовательна к аппаратным платформам - она может работать даже на процессорах "Intel Atom" с их встроеной графикой. Но у меня она не работает - движок "Unity" пытается записывать данные в несуществующие области памяти. Вот как это выглядит на практике:

Call Stack for Thread 6452:
0x0000000077548D5A (ntdll) ZwWaitForSingleObject
0x000007FEFD1F10DC (KERNELBASE) WaitForSingleObjectEx
0x000007FEC13A5EAF (mono-2.0-bdwgc) mono_conc_hashtable_remove
0x000007FEC14954F1 (mono-2.0-bdwgc) mono_object_hash
0x00000000070D4439 (Mono JIT Code) .()
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 0000000000000001)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 0000000000000001)
0x0000000000000001 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000003579DD70)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000003579DD70)
0x000000003579DD70 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF560)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF560)
0x00000000434AF560 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000003579DD70)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000003579DD70)
0x000000003579DD70 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF570)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF570)
0x00000000434AF570 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF500)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF500)
0x00000000434AF500 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000000001F4)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000000001F4)
0x00000000000001F4 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF6C8)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF6C8)
0x00000000434AF6C8 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DD25F80)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DD25F80)
0x000000002DD25F80 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF5E0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF5E0)
0x00000000434AF5E0 (()) (function-name not available)
0x00000000070D4093 (Mono JIT Code) .()
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF6C8)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF6C8)
0x00000000434AF6C8 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DD25F80)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DD25F80)
0x000000002DD25F80 (()) (function-name not available)
0x000007FEC1494805 (mono-2.0-bdwgc) mono_monitor_exit
0x0000000006915233 (Mono JIT Code) .()
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002C6FE6C0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002C6FE6C0)
0x000000002C6FE6C0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 0000000000000001)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 0000000000000001)
0x0000000000000001 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF630)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF630)
0x00000000434AF630 (()) (function-name not available)
0x00000000070D3FBB (Mono JIT Code) .()
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000007FFFFFFF)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000007FFFFFFF)
0x000000007FFFFFFF (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DD25F80)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DD25F80)
0x000000002DD25F80 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 000000002DBF29A0)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 000000002DBF29A0)
0x000000002DBF29A0 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 00000000434AF6C8)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 00000000434AF6C8)
0x00000000434AF6C8 (()) (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 'Не найден указанный модуль.' (Address: 0000000000000001)
ERROR: SymGetModuleInfo64, GetLastError: 'Произошел сбой в программе инициализации библиотеки динамической компоновки (DLL).' (Address: 0000000000000001)
0x0000000000000001 (()) (function-name not available)

Здесь вы можете почитать интересные препирательства сисадминов с разработчиками "Unity", которым просто наплевать на результаты своего труда: https://forum.unity.com/threads/u5-3-error-symgetsymfromaddr64-getlasterror-attempt-to-access-invalid-address.413565/ . Проблема возникла ещё в 2016 году - а воз и ныне там !!!
Здесь запись на эту же тему, автор которой не получил никаких ответов: https://stackoverflow.com/questions/45089306/appdomain-createdomain-causes-access-violation .


У многих людей эта игрушечка работает, они снимают интересные фильмики про неё -
https://www.youtube.com/watch?v=oaV254Gx7io&list=PLmUgdgPn6kK3XxAbtdvpWh3thIkPWzN8o&index=23 . Это значит только одно - у Китиши она должна работать тоже. Есть русскоязычный форум разработчиков "Unity" - Китиша просит читателей туда писать и спрашивать участников о том как решить проблему с игрой "Subnautica": http://unity3d.ru/distribution/index.php .

Что мы потеряли ?
Разработчики самой игрушечки "Subnautica" проделали большую работу для того чтобы сделать её интересной. Зверюшки, населяющие этот мир, проявляют признаки развитого интеллекта. Например китикам-жнецам создатели игры придали почти человеческие черты. В игрушке есть компьютер - искусственный интелект, дающий оценки различным маитериалам, минералам и животным - он навешивает ярлыки и очень нелестно оценил умственные способности жнецов. На самом деле они очень умны, проницательны и не слишком-то злобны - протагониста они кусают в основном в воспитательных целях, а вот его машинки они уничтожают действительно яростно и беспощадно. Причина этого проста - любая машинерия в сознании жнецов связана с расой пришельцев, которые построили на этой планете лабораторию - в ней они пытали и мучали местных зверюшек и их детёнышей. Через какое-то время игроку становится всё это ясно - но не сразу. И я решил попробовать избавится от самого злобного китика-жнеца, который протестует против пришельцев рядом с двигателями упавшей на планету "Авроры" - он самый сердитый изо всех них. Всё что было дальше очень напоминало рассказик Станислава Лема "Охота на Сэтавра", который я рекомендую вам послушать.

image Click to view


Я набрал ядовитых шариков, сделал несколько приманок и приехал на "мотыльке" с багажником, набитым этими приманками, к месту обитания злого китика. Я спрятал "мотылёк" за камнями, набил карманы ядовитыми шариками, и включил приманку рассчитываая заморозить кита стазисной "винтовкой" когда он подплывёт к приманке. Кит подплыл поближе - он посмотрел на приманку, посмотрел на меня - и сразу понял - что именно я собрался сделать. кит на меня рычал, показывал язык и строил рожи, а когда у меня закончился воздух - он подплыл поближе, молниеносно схватил приманку и ушёл на высокой скорости играясь ею как мячиком. Когда я поставил вторую приманку кит ненадолго показался - и скрылся. Затем он вдруг выпрыгнул из водорослей - кит описал большую дугу чтобы подкрастся незаметно - схватил "мотылёк" и утащил его разламывая на части по дороге. Ядовитые шарики просыпались мимо - я сам ими отравился - а кит громко смеялся надо мной. С большим трудом я починил "мотылёк" и убежал на нём как побитая собака. С тех пор я перестал пытатся делать жнецам пакости - остальные из них довольно добродушны - они охотятся, кушают рыбку и не трогают протагониста если только он сам к ним не пристаёт.

Очень глубоко под поверхностью моря в игрушечке есть пещера, называющаяся "неактивная лавовая зона" - там много очень нужных для изготовления оборудования уникальных минералов - особенно кианита. Чтобы не подвергать опасности дорогостоящий транспорт - автобус "Циклоп"...


И перевозимый им экзокостюм "Краб", который применяется для добычи ископаемых методом бурения я отправился за кианитом на "Мотыльке".


Для этого я изготовил несколько больших и ёмких кислородных баллонов - ведь "мотылёк" будет раздавлен на глубине больше 900 метров - ити баллоны я сложил в багажнике "мотылька".


Я подошёл к пропасти, ведущей в глубоководный биом, выбрался из "мотылька" и отправился со своими баллонами в глубину за кианитом, увлекаемый моторчиком "морской глайдер". Я нашёл пещеру с этим кианитом и набрал его там - к этому времени я израсходовал уже два больших баллона. выбравшись из пещеры я встретил дракона, который... усадил меня на себя и потащил к выходу из биома !!!
Много лет тому назад в части, где я служил, был "борт", работавший с позывным "Дракон"... И эфир постоянно наполнялся фразами: -"Кто ? "Дракон" ??? Пшёл на х@й Дракон !!!". Или кратко, по спартански: -"Дракон - иди на х@й"... Всё "Дракона" обижали... А меня никто не обижал - я сам работал с позывным "Вахмурка" и на моей машине были нарисованы оба гнома - сам Вахмурка и его друг Каржимилик... Меня все уважали и часто обращались ко мне как "товарищ вахтмистр" так как Вахмурка был явным вахтмистром. И я заступался за "Дракона" разьясняя личному составу что матерится вечно не получится а армия - это не детский сад. Сейчас может и нИпадецкий - но в СССР - нет. Однако местный дракон меня очень напугал - и я отматерил его от души. На самом деле он помог мне сэкономить кислород. Дракон этот любит чесатся об "Циклоп", а ещё его очень донимают живущие в этом биоме пиявки - но я ещё не доехал туда на "Циклопе".

Привезя домой драгоценный кианит я столкнулся с тем что игрушечка перестала работать вообще. И теперь её надо, необходимо - починить. Я прошу всех моих читателей помочь мне в этом. Найдите решение этой проблемы - его надо найти.
Previous post Next post
Up