Jump to content

  • Log In with Google      Sign In   
  • Create Account


- - - - -

Compilation crash, possibly on error output


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 TheAtom   Members   -  Reputation: 330

Like
0Likes
Like

Posted 23 February 2013 - 03:27 AM

Tested on rev1558. Likely related to http://www.gamedev.net/topic/639247-import-function-with-default-argument/ (indeed the code is a chopped down version of the one found there). The following two modules crash on compilation:

 

// mod1
import void g(bool dummy, int x = -1) from "mod2";
    
void f(bool dummy, int x)
{
}

void run()
{
    f(true, 0);
    f(true, 0);
    g(false);
}
 
// mod2
import void run() from "mod1";

void g(bool dummy, int x = -1)
{
}

class T
{
    T()
    {
        run();
    }
};

T Dummy;

 

This should give an error saying that an unbound function has been called, but instead it crashes (null pointer access) with the following callstack:

 

asCTypeInfo::operator= + 110
asCArray<asSDeferredParam>::PushLast + 78, as_array.h (180)
asCCompiler::AfterFunctionCall + 403, as_compiler.cpp (7711)
asCCompiler::PerformFunctionCall + 1450, as_compiler.cpp (11745)
asCCompiler::MakeFunctionCall + 563, as_compiler.cpp (10071)
asCCompiler::CompileFunctionCall + 1957, as_compiler.cpp (8203)
asCCompiler::CompileExpressionValue + 1919, as_compiler.cpp (7256)
asCCompiler::CompileExpressionTerm + 169, as_compiler.cpp (6655)
asCCompiler::CompilePostFixExpression + 296, as_compiler.cpp (6603)
asCCompiler::CompileExpression + 277, as_compiler.cpp (6579)
asCCompiler::CompileCondition + 2440, as_compiler.cpp (6534)
asCCompiler::CompileAssignment + 420, as_compiler.cpp (6344)
asCCompiler::CompileExpressionStatement + 152, as_compiler.cpp (3304)
asCCompiler::CompileStatement + 145, as_compiler.cpp (2520)
asCCompiler::CompileStatementBlock + 260, as_compiler.cpp (1016)
asCCompiler::CompileFunction + 319, as_compiler.cpp (546)
asCBuilder::CompileFunctions + 434, as_builder.cpp (709)
asCBuilder::Build + 41, as_builder.cpp (241)
asCModule::Build + 110, as_module.cpp (223)

 

Removing any code makes the crash go away, leaving the expected error message, but I am unsure whether default arguments are necessary in the sample to see the crash.


Edited by TheAtom, 23 February 2013 - 03:28 AM.


Sponsor:

#2 Andreas Jonsson   Moderators   -  Reputation: 3055

Like
0Likes
Like

Posted 23 February 2013 - 09:31 AM

It's crashing within the compiler. It didn't even get to the initalization of the global variable where it would be expected it get an 'unbound function' exception.

 

I'll look into it.


AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

#3 TheAtom   Members   -  Reputation: 330

Like
0Likes
Like

Posted 23 February 2013 - 12:50 PM

I just noticed that removing "T Dummy;" still leaves the crash with a slightly different callstack:

asCArray<asSDeferredParam>::PushLast + 62, as_array.h (180)
asCCompiler::AfterFunctionCall + 403, as_compiler.cpp (7711)
...

 

so indeed it has nothing to do with the error output.



#4 Andreas Jonsson   Moderators   -  Reputation: 3055

Like
0Likes
Like

Posted 23 February 2013 - 01:20 PM

I've fixed this in revision 1572. 

 

It was the same bug reported by Wipe, i.e. the use of imported functions with default arguments.

 

With the fix you'll get the appropriate error message as the initialization of the global variable in mod2 fails due to unbound functions. If you need to get around this you can compile the module without initializing the global variables with SetEngineProperty(asEP_INIT_GLOBAL_VARS_AFTER_BUILD, false). Then manually initialize the global variables with ResetGlobalVars() after you've bound the imported functions.

 

Regards,

Andreas


AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS