Heisenbug: The true story of undefined behavior, Part 2

CommentNode’s position problem

In the previous part, we’ve discussed the problem that was presented in RedBaron. Today I want to show you my old work, my old little investigation about another strange bug(or feature?) in Baron.
Baron is a part of RedBaron library, literally, RedBaron relies on Baron Full Syntax Tree which it’s giving for next manipulations.
Baron had a problem with CommentNode’s position in the FST tree.
This bug broke RedBaron’s nodes recognition.

Below I’ll tell you a story about it and start from examples.
Let’s roll sleeves up and get down to business.

Continue reading

Heisenbug: the true story of undefined behavior, part 1

One day I was developing a program to work with a python source code. A kind of analyzer for the static code analysis. I found a library Redbaron and wanted conduct some research to understand its capabilities.No so fast cowboy I wrote a lot of python code in Pycharm created by the JetBrains. After my tests via pytest I’ve got the first bug. I’ve got the same problem like in #119 (Really, Is it a problem of IDE by the JetBrains?).

After debugging, I found some solutions, patches, and hacks.

Next, I’m telling you, dear reader, a story about a difference between hacks, patches, and solutions.

And Yeah, It hasn’t been a problem of IDE. Continue reading

Computer Viruses: Programmer’s View

 Sometimes ago I had finished the book about computer viruses and anti-viruses. This short article is just a summary of my recordings. Moreover, it is a translate from Russian to English(the book is in the Russian). I’ve got a lot of fun. Great work of the author, thanks a lot for it. ( Климентьев К.Е. “Компьютерные вирусы и антивирусы: взгляд программиста” – link to order).

I would like to talk about common technologies that use in some viruses, such as Win32.Zmist andWin32.MetaPHOR and etc. I am not a malware guy and don’t want to describe all stuff about internals, but just rewrite some concepts of those two from the book and other sources. Because viruses just use approaches of those two. Look:

  • RPME – Real Permutation Engine
  • UEP – Unknown Entry Point (same as EPO) : this method inserts first commands (entry point of a virus) inside of the middle of an original program.
  • ETG – Executable Trash Generator : this method generates trash commands to hide original commands of a virus inside of a program.
  • MistFall – mixing code of program and virus
  • disassembler – this creates disassembly code of a program.

Let’s explore some principles.

Continue reading

The Importance Of Playing

Перечитываю одну замечательную книгу : Surely You’re Joking, Mr. Feynman! и нахожу, в который раз уже, параллели с собой. Ввиду того, что испытываю полный burn out – депрессию и все в таком духе, для меня советы вполне актуальны и важны. Самоанализ вполне себе вещь. Но специалист лучше.

И вот главная по мне цитата, таки выгорающим людям, от которых остается пепел:

But when it came time to do some research. I couldn’t get to work. I was a little tired; I was not interested; I couldn’t do research! …

And then I thought to myself, “You know, what they think of you is so fantastic, it’s impossible to live up to it. You have no responsibility to live up to it!”…

Then I had another thought; Physics disgusts me a little bit now, but I used to enjoy doing physics. Why did I enjoy it? I used to play with it. I used to do whatever I felt like doing – it didn’t have to do with whether it was important for the development of nuclear physics…

So I get this new attitude … I’m going to play with physics, whenever I want to, without worrying about any importance whatsoever.
Within a week I was in the cafeteria and some guy, fooling around, throws a plate in the air. …

I had nothing to do, so I start to figure out the motion of the rotating plate…
And before I knew it (it was a very short time) I was “playing” – working, really – with the same old problem that I loved so much, that I had stopped working on when I went to Los Alamos; my thesis-type problems; all those old-fashioned wonderful things.
It was effortless. It was easy to play with these things. It was like uncorking a bottle: Everything flowed out effortlessly. …

There was no importance to what I was doing, but ultimately there was. The diagrams and the whole business that I got the Nobel Prize for came from that piddling around with the wobbling plate.

Поэтому начинаем пожалуй “играть”. Не заботясь особо о том, какое мнение составлено о нас. Насколько к нам “предъявляют” и насколько эти “загоны” осаждают нас. Мы не виноваты, что их ожидания такие – это их ошибка, но едва ли наша ответственность.

Just Playing!