This is the backtrace (for registering the param as: const array<float> &in):
asSSystemFunctionInterface::operator=(const asSSystemFunctionInterface & in) Line 114 + 0x6 bytes C++
asSSystemFunctionInterface::asSSystemFunctionInterface(const asSSystemFunctionInterface & in) Line 110 C++
asCScriptEngine::GenerateNewTemplateFunction(asCObjectType * templateType, asCObjectType * ot, asCScriptFunction * func, asCScriptFunction * * newFunc) Line 3725 + 0x3e bytes C++
asCScriptEngine::GetTemplateInstanceType(asCObjectType * templateType, asCArray<asCDataType> & subTypes) Line 3416 + 0x18 bytes C++
asCBuilder::CreateDataTypeFromNode(asCScriptNode * node, asCScriptCode * file, asSNameSpace * implicitNamespace, bool acceptHandleForScope, asCObjectType * currentType) Line 4632 + 0x16 bytes C++
asCBuilder::ParseFunctionDeclaration(asCObjectType * objType, const char * decl, asCScriptFunction * func, bool isSystemFunction, asCArray<bool> * paramAutoHandles, bool * returnAutoHandle, asSNameSpace * ns, asCScriptNode * * listPattern) Line 1035 + 0x47 bytes C++
asCScriptEngine::RegisterMethodToObjectType(asCObjectType * objectType, const char * declaration, const asSFuncPtr & funcPointer, unsigned long callConv) Line 2654 + 0x34 bytes C++
asCScriptEngine::RegisterObjectMethod(const char * obj, const char * declaration, const asSFuncPtr & funcPointer, unsigned long callConv) Line 2613 + 0x23 bytes C++
In GenerateNewTemplateFunction(), the failure is in assigning to sysFuncIntf:
// TODO: template: Must be careful when instanciating templates for garbage collected types
// If the template hasn't been registered with the behaviours, it shouldn't
// permit instanciation of garbage collected types that in turn may refer to
// this instance.
func2->inOutFlags = func->inOutFlags;
func2->isReadOnly = func->isReadOnly;
func2->objectType = ot;
func2->sysFuncIntf = asNEW(asSSystemFunctionInterface)(*func->sysFuncIntf);
func->name is "factstub".
func->sysFuncIntf is null. So *func->sysFuncIntf is creating a bad reference (?).