
Probably the loop is too fast, and it doesn't give other parts of your
Interesting, I think that worked. (I'll try on bigger examples and update again)
program to take a lock.
Are there any ways to test for this? How do I know if this is really the case?
2014-12-12 18:20 GMT+02:00 Yuras Shumovich
What if you replace the `putStrLn` with `yield` or `threadDelay 1`? Probably the loop is too fast, and it doesn't give other parts of your program to take a lock.
On Fri, 2014-12-12 at 17:58 +0200, Ömer Sinan Ağacan wrote:
Hi all,
I'm having a horrible bug in my program: a print statement that doesn't force any values(e.g. it just prints a static string) effecting the behavior of the program.
I tried hard to produce a minimal example, but couldn't manage it. So instead I'm just going to point to the source code of my program: https://github.com/osa1/rho-torrent/blob/master/src/Rho/Listener.hs#L125
If I remove this print statement everything goes weird. I think when I remove this statement some effects are not happening, or happening in wrong times.
Here's how I'm testing the different behavior: This is a network application and I'm creating an environment in my system and making this program talk to another program.
I run my program 10 times without the print statement, and run 10 times with it.
Both groups produce same output in every time, but outputs of first group and second group are different from each other. (apart from extra prints, of course)
So this print statement effects some other things, and expected behavior is the one happening with print statement.
I know the program is big for anyone to figure things in short amount of time, I'm just looking for tips and pitfalls that I may be falling. Does anyone have any ideas what I may be doing wrong? Note that the program doesn't use any unsafe stuff.
Thanks in advance. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe