– А откуда ему прознать-то? – отвечал подошедший Ерошка, еще не вполне выйдя из образа – Разве что ты, дядя, по старой памяти донесешь.
Коршунов предупредительно хмыкнул, и спор, не успев разгореться, угас.
Снифферы возбуждённо поскуливали, ластились к людям, привлечённые запахом яичницы и уже разложенной приманки. Коршунов гладил их по холкам, рассматривал сигнатуры, завернул одному губу, осмотрел:
– Что-то худые они у тебя, Ерошка. Или ты не патчишь их?
– Как же не патчить, вашмилось! Раза два в неделю, самолично, каждого. И обновляю, и за версией слежу. Ну и что, что худые! Зато уж след не упустят. Звери!
Коршунов недоверчиво прищурился, но больше ничего не сказал, зашел в модуль и начал собираться. Подсумки, патронташ, плащ для скрадывания, и чем укрыться в непогоду. Повертев в руках футляр с интроскопом, положил его обратно: в чаще он вряд ли понадобится, а вместо него по весу лучше взять полдюжины контрольных точек. Рассовав всё по подсумкам, для пробы понаклонялся в стороны, попрыгал, чуть перетянул амуницию и, повесив на плечо дебаггер стволом вниз, вышел наружу. Глянул на посерьёзневшего и тоже вооружённого Трофима, кивнул:
– Собрались? Тогда, помолясь, приступим.
В след за Трофимом, Коршунов – замыкающим, спустились в низину. Раньше по ней протекал какой-то устарелый протокол. Сейчас он заилился, зарос поправками и патчами и превратился в цепочку глюковищ, на одном из которых и охотился на заре Трофим. Всё же ложбина осталась, и по ней, как прикинул Коршунов, можно было зайти далеко, не заплутав и не сбив ног. Не прошло и получаса, как они ступили под тёмную сень старого кода.
Код обступил их со сех сторон, запущенный и дикий. По обе стороны ложбины старые иерархии классов росли, ветвясь, сплетаясь вверху над головами, образуя сплошной глухой и мрачный полог. В промежутках росли какие-то бледные, искривлённые, уродливые интерфейсы, беспорядочно и густо. Ни щебета, ни шороха – только хрустит под ногами многолетний слой опавших версий. Кое-где великанские деревья классов стояли покосившись под странными углами, подточенные багами. Кое-где поваленные, с вывороченными корнями и ссылками, они гнили без использования, облепленные белёсоватыми с тленным запахом колониями стабов. Тяжело, душно и жутко было здесь путникам. Здесь, среди переплетения непонятных мыслей, проросших кодом, уже давно не было места человеку.
К концу третьего часа пути в глубину чащи они решили сделать привал. Вокруг росли уже не классы, а странного и древнего вида библиотеки («Да тут Фортран, ничего себе!» – изумлённо покачал головой Коршунов). Без подлеска из интерфейсов, совсем почти без версий, возвышались они насколько видел глаз сумрачной колоннадой. Здесь когда-то был исток протокола, по руслу которого они пришли. Здесь же они нашли первую сброшенную кóру. Начинаясь от ложбины, она уходила влево между двумя поваленными каталогами и терялась из вида. Охотники, насторожившись, прошли вдоль неё, чем дальше, тем больше удивляясь, каким огромным был оставивший её процесс.
– Тут в одной выползине полтерабайта, не меньше – шепнул Трофим (все трое инстинктивно перешли на шёпот, и даже снифферы примолкли и не рвали поводки).
– Так – согласился Коршунов.
Он зашёл, чвакая сапогами, в самую кору, наклонился, протянул что-то через пальцы и, распрямляясь и вытирая руки, сказал:
– В нём еще и потоков как бы не тридцать. Многозадачный такой, вырос. Мне кажется, это он. И кора свежая.
Он и Трофим расчехлили оружие, проверили заряды. Снифферы взяли след, и люди вслед за ними тихо устремились в глушь. Справа от них рыжей тенью мелькал плагин.
За время недолгого бега сброшенные коры попадались еще дважды, и каждая была крупнее предыдущей. Коршунов стиснул зубы: местные власти, как всегда, тянули до последнего и вызвали его из столицы только когда стало уже поздно, ни о чём не предупредив. При виде третьей коры, уже совсем немыслимых размеров, Трофим побелел лицом, зачем-то взял наперехват своё оружье, споткнулся, упал и тут же вскочил, озираясь, и, загнанно дыша, присоединился к погоне. Снифферы уже не тянули шлейку, они перешли на мелкую трусцу и жались поближе к людям. Впрочем, их помощь больше не требовалась: вдали было уже видно, как среди зарослей библиотек ворочается исполинская туша. Хозяин здешних мест. Баг.
– Здоров! Ох, и здоров! – прошептал Коршунов.
Затаившийся рядом с ним Ерошка тоже что-то прошептал, судя по жестикуляции, матерное. Они, вскарабкавшись на низко растущую библиотеку и укрывшись среди процедур, наблюдали свою дичь или, скорее, противника, оставив вконец павшего духом Трофима присматривать за сворой. Баг был огромен, необъятен. Он, похоже, охватывал все еще живые библиотеки в окрестности. Видно, когда-то неизвестный кодер допустил его в какой-то элементарной функции. Потом на эту функцию ссылались, вызывали её, а вместе с ней – и бага, размножив, расселив по библиотекам. Теперь он хлюпал и скрежетал под ними, над ними, вокруг них, и даже Коршунову было непонятно, что с ним таким теперь делать.
– Вашмилось! Вашмилось! Может, в город сбегать, за подмогой? – прошептал Ерошка белыми губами.
– Ну, сбегаем мы. День туда, день там, два дня обратно. Представляешь, насколько он вырастет? Проще было бы вообще сюда никому не ходить, и про этот код забыть. Но что уж теперь, наворотили, теперь нам расхлёбывать.
И оба продолжили наблюдение. Ах, как сейчас пригодился бы интроскоп! Пусть не сразу, пусть хоть целый день провести здесь в укрытии, но можно было бы найти ту функцию, с которой он начался, изолировать её. Дальше было бы проще. Так ведь нет, понадеялся, решил взять не тонкостью, а силой. Контрольных точек набрал… Ну вот, пожалуйста, он, открытый, втыкай – не хочу. Коршунов поёжился, и вдруг насторожился. Кто-то шёл через лес прямо к ним.
Это был Трофим. Хожалый, по-видимому, совсем потерял голову от страха и одиночества и, привязав где-то свору, шёл к своим… и к багу. Едва заслышав его, пупырчатая масса вокруг напряглась, а затем вдруг вся сразу выстрелила собой в застывшего на поляне Трофима. Миг – и хожалый накрыт с головой бурлящей многопотоковой гадиной. А в следующий миг по багу ударили в два ствола дебаггер Коршунова и трассер Трофима в Ерошкиных руках. Каждый выстрел отстреливал один поток, но их было много, гораздо больше, чем высчитанные тридцать, и часть из них по-прежнему сжимала старого хожалого, а другие обернулись и кинулись на спрятавшихся охотников. В ход пошли контрольные точки: Коршунов бросал их метко, целя в общие функции и срубая за раз по нескольку штук, но баг атаковал со всех сторон сразу, и минуты охотников были сочтены. Помощь пришла, откуда не ждали: снизу раздался заливистый лай, и свора, оборвавшая привязь, ринулась на бага. С тонким визгом лай оборвался, и снифферы, переполнившись, бессильно повисли, но плагин настойчиво прогрызал дорогу к осаждённому хозяину, и белая пена летела с его ощеренных парсеров.
Сражаясь против нескольких врагов, баг невольно истончился, и стало видно, как между его потоков пульсируют точки вызова. Стреляя и бросая, кромсая и рубя, Коршунов краем глаза замечал эти точки. Вот натиск бага ослаб, потоки ринулись вниз, чтобы подвесить уже израненного плагина. Коршунов понял, что передышка продлится лишь секунды, после чего баг ринется на них всей своей мощью, лихорадочно зашарил по подсумкам и вытащил единственную оставшуюся контрольную точку. Ну вот, осталась одна. Теперь главное – правильно воткнуть. Он глубоко вздохнул, прикинул еще раз и запустил её в переплетение потоков за миг до того, как на него со всех сторон обрушился баг.