Ok, I think I've found the root cause of the problem, but it's strange. In ts_print() function in util.c (just for those interested in locating the line below in snort source code), there is a line like this:
s = (tvp->tv_sec + localzone) % 86400; On amd64, this produces random output (not so random, but anyway), which is the value of s. To fix this problem, all I have to do is to expand that line as follows: temp = tvp->tv_sec + localzone; s = temp % 86400; Since I felt that this is a very dumb thing to do (and just a work around), I suspected the type of s. So I used different types for s, but nothing has changed. Also, since I tried -O0 compiler option, I don't think it's an optimization problem. Could somebody explain how this is possible? On amd64 what is it that's different from i386 and can cause a problem like this? And what is the correct way of fixing it? Thanks,