On 2/4/06, Joris Huizer <jorishuizer@planet.nl> wrote:
James Trotter wrote:
> On 2/4/06, *Joris Huizer* <jorishuizer@planet.nl
> <mailto:jorishuizer@planet.nl>> wrote:
>
>     Hello,
>
>     I have this question: I have a game called "Knights and Merchants" which
>       I sometimes play; I find it deadlocks each time after playing for an
>     hour or so
>     it seems it isn't a complete deadlock, sometimes some of sound comes
>     through between intervals of minutes or so; harddisk activity seems
>     extreme - the light is burning constantly.
>     I then usually decide to kill the program; as it opens fullscreen I
>     can't get to the xterm that launched it, so I try to get to a console;
>     The system is so slow that it takes some time to get to a console
>     <ctrl-alt-f1>, and login in may time out a few times before finaly
>     getting in (the cure to that one is simple: login before starting the
>     game...) - then it takes another minute or so to run ps and kill the
>     wine process
>
>     is there a way to find what is causing the deadlock? I can log the
>     output wine gives using `script`, but as deadlocks only occur after a
>     lot of time running the game with lots of logging active would be a pain
>
>     will log the output at least next time I play; for now, has somebody
>     ideas how to log without getting major slowdown (otherwise there's no
>     playing in it)?
>
>     thanks,
>
>     Joris
>
>
>
> This really sounds like a memory leak to me. Usually I'd use valgrind
> (http://valgrind.org/) to find memory leaks and such. Valgrind 3.1.0
> works with wine, but it produces alot of output you'd have to look
> through and the program will run insanely slow. It might be worth a try.
>
>
> ------------------------------------------------------------------------
>
>

I'm sort of familiar with valgrind too :-)
will try if playing it is still possible when running with valgrind; I
know it is doing direct-draw and direct-sound (as wine gives warnings
and fixmes on some of the calls it does to those)
just wondering... when it hangs, how should it be killed such that
valgrind will still report where it broke? (kill -9 stops it too
brutely, at least with valgrind 2.4.0)

thanks,

Joris



If it really is a memory leak. you might not need to run the application until it hangs. The memory leak might be small which leads the program to crash after a long time. Try to run valgrind with something like this:
valgrind --leak-check=full --trace-children=yes wine [name of the program]

You might want to make valgrind output it to a log. The output is usually quite messy.

Before you try valgrind, Robert Shearman said that you need to apply a patch against valgrind 3.1.0 so that it can generate useful stack traces when run with wine. I've attached the patch.

Regards,
James