crypt of decay - November 16th, 2018 [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

November 16th, 2018

опизденеть [Nov. 16th, 2018|08:36 pm]
[Tags|]

целый день она ебалась, но, блядь, хуев баг нашла.

уж не знаю, ранди ли это жопорукий, или янис протупил, но в ACS VM был МЕГАБАГ. в вызовах внутренних acs-функций return не восстанавливало указатель на локалы из сохранённого значения, а тупо ставило его на «вершина стека минус количество аргументов минус количество локалов». и всё было заебись до тех пор, пока на стеке было чисто. но там не всегда чисто, там могут лежать временные значения!

ну, типа вот: `func0()+func1()*locvar`. при таком раскладе возврат `func0` временно шароёбится на стеке, и после вызова `func1` указатель на наши локалы съехал. и `locvar` берёт по кривому указателю полную поебень. к сегфолту это не приводит, но результат всё равно плачевен.

(ну да, это зависит от кодогена; неважно, вы уловили суть, я думаю)

подкотэ скриншот )
Link10 meows|meow!

navigation
[ viewing | November 16th, 2018 ]
[ go | Previous Day|Next Day ]