[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: SDL vs stdin?

On Wed, May 12, 2004 at 12:24:55AM +0400, Dmitry Samoyloff wrote:
> On Tuesday 11 May 2004 21:47, Gregor Mückl wrote:
> > On Monday 10 May 2004 22:53, Dmitry Samoyloff wrote:
> > > Hi all,
> > >
> > > I want to implement the console commands in my game engine (to reload
> > > scripts or maps on the fly, etc) and I'd like to use stdin for this
> > > purpose to simplify the coding. So, I'm trying to read from stdin using
> > > fgets() call (or the 'cin' object) in the program that uses libSDL's
> > > event handling also and this always leads to a crash. Is it a known
> > > conflict? Or maybe the problem is not libSDL?
> > >
> > > Regards, Dmitry Samoyloff
> >
> > Hi!
> >
> > Are you using SDL on a X display or on a text/framebuffer console? In the
> > latter case SDL's keyboard handling might well interfere with standard
> > stdin/stdout. In the former case the problem is more likely within your own
> > code. But I haven't tried either myself yet, so I can't tell you for sure.
> > Maybe you should try to get a stack backtrace to pinpoint the location of
> > the crash.
> I'm using SDL with X.
> I ran my program in gdb several times and backtraces shows me that crashes 
> happens in two different places, but always in free() or malloc() calls 
> performed from different libs (Lua and OpenAL). This *only* happens if I'm 
> reading from stdin in my program's main loop, no matter where exactly :-( I'm 
> still trying to find out the reason of such strange behaviour...

segfaults in free() or malloc() are usually caused by freeing the same memory
twice, or other misuses of the heap. If you set the MALLOC_CHECK_
environment variable to 1, it should print out diagnostics if it detects
double frees or other problems. If you want to be able to debug problems in
a debugger, setting MALLOC_CHECK_ to 2 causes libs to abort() whenever
a malloc/free error occurs.

Alistair Riddoch

Attachment: pgp00000.pgp
Description: PGP signature