First Tutorial/Example Causing A Segfault

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.
EmperorJon
Posts: 7
Joined: Mon Jul 01, 2013 5:58 pm

First Tutorial/Example Causing A Segfault

Post by EmperorJon »

Hi!

I have no idea what I've done wrong. It's all been set up correctly and it compiles fine, no warnings or errors.
The program gets as far as "IVideoDriver* driver = device->getVideoDriver();" before throwing up a segfault. Something there is causing it, and I'm concerned it's something to do with the pointer, but I don't see how it can be anything I've done...

All the other examples work fine, as do the different rendering modes, and I've tried changing EDT_SOFTWARE to others to test and I get the same result.

Currently I really don't have any idea how I can get more info on the problem, debug is being fiddly, I can isolate down to that line but can't get into the function call to see where it's going. If anyone has any ideas that'd be brilliant, otherwise I'm stuck forever! :p

Thanks, Jon.
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Re: First Tutorial/Example Causing A Segfault

Post by hybrid »

Probably your device is not correctly created, and the pointer is simply void.
rcalvin
Posts: 31
Joined: Tue Jan 08, 2013 1:58 am

Re: First Tutorial/Example Causing A Segfault

Post by rcalvin »

Assuming he's doing exactly what's in the tutorial, that shouldn't be the case though, should it hybrid? It has the "if (!device) {return 1;}" in there, I think.
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Re: First Tutorial/Example Causing A Segfault

Post by hybrid »

Well, getVideoDriver simply returns the pointer from inside the device. The device might have a problem e.g. when running fullscreen with unsupported dimensions. This would also affect other drivers as well. But a more common cause could be a problem later on, where themodels are loaded. Maybe you use an optimized release version, which can lead to segfaults at different places
EmperorJon
Posts: 7
Joined: Mon Jul 01, 2013 5:58 pm

Re: First Tutorial/Example Causing A Segfault

Post by EmperorJon »

The setWindowCaption line seems to be nullifying the device, it seems... as potentially is addStaticText, getMesh... etc. later on.
So, looking like some sort of library access issue, or what?
hybrid
Admin
Posts: 14143
Joined: Wed Apr 19, 2006 9:20 pm
Location: Oldenburg(Oldb), Germany
Contact:

Re: First Tutorial/Example Causing A Segfault

Post by hybrid »

In that case you either use the wrong dll, or at least some mismatching ones. If your head does not match your dll, code will access wrong areas and overwrite stuff in your data.
EmperorJon
Posts: 7
Joined: Mon Jul 01, 2013 5:58 pm

Re: First Tutorial/Example Causing A Segfault

Post by EmperorJon »

That's what I thought. Hmmm...

I have the most recent stable download and I'm obviously using the header in the include folder, and the libs and the dll from the gcc folder (I've gathered that's what I want if compiling with g++ although I may be making a terrible mistake...).

As a note I'm actually using Netbeans as my IDE.

Any glaringly obvious mistakes I've made there?
sudi
Posts: 1686
Joined: Fri Aug 26, 2005 8:38 pm

Re: First Tutorial/Example Causing A Segfault

Post by sudi »

Are you on linux? do you have more than one irrlicht on your computer? did you install the irrlicht dlls at some point? is maybe netbeans looking for headers or libs from the other version?
We're programmers. Programmers are, in their hearts, architects, and the first thing they want to do when they get to a site is to bulldoze the place flat and build something grand. We're not excited by renovation:tinkering,improving,planting flower beds.
EmperorJon
Posts: 7
Joined: Mon Jul 01, 2013 5:58 pm

Re: First Tutorial/Example Causing A Segfault

Post by EmperorJon »

I'm actually on Win7, although I'd rather be running a Linux distro for this. No space on the drive for a separate partition though.

And no, I only have 1 single set of Irrlicht stuff. I've obviously just got the wrong thing somewhere, which is confusing me because there's only one single version of the header file, and I'm sure I have the right libs and dll to match...
Otaka
Posts: 17
Joined: Fri Nov 16, 2012 1:47 pm

Re: First Tutorial/Example Causing A Segfault

Post by Otaka »

I have tried several times to compile and run irrlicht 1.8 with mingw on Windows 7, but with many troubles. It always threw SEG_FAULT on every irrlicht function. Only solution - recompile engine from sources, and then use new dll and lib file. But in this case I didn't make it work with DirectX, only with OpenGL.
That is why now I using Visual Studio 2010 Express, and it works fine.
EmperorJon
Posts: 7
Joined: Mon Jul 01, 2013 5:58 pm

Re: First Tutorial/Example Causing A Segfault

Post by EmperorJon »

Thanks for that! That's the issue I'm experiencing, obviously, for whatever reason.
As far as I can read, if I want to recompile the engine to be compatible with DirectX I need to do more, but I'm happy recompiling it just to use OpenGL.
I hate to sound a total noob but I really don't have experience compiling full libraries, so I have no idea where I'd even start recompiling Irrlicht, and don't understand why that would help either. (Unless you're saying specifically recompiled with MinGW, in which case that would make sense. Still don't know how I'd go about that though.) I'm not a fan of Visual Studio.

Thanks so far for all your help, you've been great. :)
Otaka
Posts: 17
Joined: Fri Nov 16, 2012 1:47 pm

Re: First Tutorial/Example Causing A Segfault

Post by Otaka »

Irrlicht can be compiled from sources very easy. Just checkout it from svn
svn://svn.code.sf.net/p/irrlicht/code/trunk
then in folder source/Irrlicht there are many preconfigured projects(for Visual Studio and Code::Block): Irrlicht.sln, irrlicht.cbp,Irrlicht10.0.vcxproj. Just open it with the IDE and press "build".
May be you should install DirectX9 SDK before compiling, if you want DirectX available...
that is all. After that in folder /bin/ you will find Irrlicht.dll and in folder /lib/ you will find ittlicht.lib files.
EmperorJon
Posts: 7
Joined: Mon Jul 01, 2013 5:58 pm

Re: First Tutorial/Example Causing A Segfault

Post by EmperorJon »

Aha! I shall attempt to compile it using VS and report back on my progress.

Thank you very much... hopefully this will work. :|


EDIT: Well, I tried compiling but unfortunately it seems to be set up to use the DirectX stuff, so I'll either have to download that, or ask that someone sends me a fresh from-source irrlicht.h and irrlicht.dll and I see if they work. :\ No idea what MinGW's issue is, and I'd much rather use NetBeans than VS. I'm awkward.
zerochen
Posts: 273
Joined: Wed Jan 07, 2009 1:17 am
Location: Germany

Re: First Tutorial/Example Causing A Segfault

Post by zerochen »

hi,

you also can uncomment #define _IRR_COMPILE_WITH_DIRECT3D_9_ in IrrCompileConfig.h to deactivate dx support if you dont need it.

regards
zerochen
hendu
Posts: 2600
Joined: Sat Dec 18, 2010 12:53 pm

Re: First Tutorial/Example Causing A Segfault

Post by hendu »

You need to use a matching compiler and libs. Never use some downloaded DLL.
Post Reply