【发布时间】:2015-12-16 13:35:21
【问题描述】:
Assertion detected at Wed Dec 16 14:27:14 2015
断言失败:文件第 714 行的强制断言
".\memmgr\mem32aligned.cpp".
发现损坏的内存块
配置: MATLAB 版本:7.5.0.342 (R2007b)
MATLAB 许可证:144193
操作系统:Microsoft Windows XP
窗口系统:版本 5.1(内部版本 2600:Service Pack 3)
处理器 ID:x86 Family 6 Model 15 Stepping 13,GenuineIntel
虚拟机:Java 1.6.0 与 Sun Microsystems Inc. Java HotSpot(TM) Client VM 混合模式
我正在使用 matlab 分析一些 .raw 数据。
分析文件 FILE.raw 时程序运行良好。但是当完全相同的 FILE.raw 位于文件夹 /dummyfolder 中时。
我收到以下错误:
Stack Trace:
[0] udd_mi.dll:_ouMakeRefsExternal(1, 0x014c6ac8, 0, 0x00ceb020) + 51 bytes
[1] udd_mi.dll:public: virtual struct mxArray_tag * __thiscall UDInterfaceVectorMC::convertToMatlabArray(void const *)(0x12ae7000, 0xc7335f60, 0x12ae6360, 0x12a8d3f0) + 94 bytes
[2] udd_mi.dll:bool __cdecl ouCallMethodWithErrorTrap(class UDMethodInfo *,struct mxArray_tag *,int,struct mxArray_tag * * const,int,struct mxArray_tag const * * const,class Exception * *)(0x123e6b40, 0x12ae3420, 1, 0x00ceb0d4) + 1016 bytes
[3] udd_mi.dll:bool __cdecl ouCallMethod(struct mxArray_tag *,struct mxArray_tag *,int,struct mxArray_tag * * const,int,struct mxArray_tag const * * const)(0, 0x12ae3420, 1, 0x00ceb0d4) + 192 bytes
[4] hg.dll:_hgFindobj(0x12aef020, 0x00ceb274, 4, 0x00ceb2d4) + 583 bytes
[5] hgbuiltins.dll:_findobjWrapper(1, 0x00ceb274, 3, 0x00ceb2d4) + 991 bytes
[6] m_dispatcher.dll:public: virtual void __thiscall Mfh_builtin::dispatch_mf(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00ceb274, 3, 0x00ceb2d4) + 112 bytes
[7] m_dispatcher.dll:public: virtual void __thiscall Mfh_MATLAB_fn::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(1, 0x00ceb274, 3, 0x00ceb2d4) + 163 bytes
[8] m_interpreter.dll:__catch$?inDispatchFromStack@@YAHHPBDHH@Z$0(199, 0x031921e0 "findobj", 1, 3) + 744 bytes
[9] m_interpreter.dll:enum opcodes __cdecl inDispatchCall(char const *,int,int,int,int *,int *)(0x031921e0 "findobj", 199, 1, 3) + 156 bytes
[10] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag volatile *,int *)(1, 2451, 66, 0) + 2614 bytes
[11] m_interpreter.dll:int __cdecl protected_inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 2451, 49, 0) + 87 bytes
[12] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 2451, 49, 0) + 274 bytes
[13] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x12a99da0, 0x7c91e900, 0xc76fa4a4, 0xffffffff) + 916 bytes
[14] m_interpreter.dll:void __cdecl inRunMfile(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_mp *,struct inWorkSpace_tag *)(0, 0x00ceba9c, 1, 0x00cebb2c) + 673 bytes
[15] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0, 0x00ceba9c, 1) + 29 bytes
[16] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00ceba9c, 1, 0x00cebb2c) + 28 bytes
[17] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00ceba9c, 1, 0x00cebb2c) + 203 bytes
[18] m_interpreter.dll:void __cdecl mdCallFunction(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_MATLAB_fn *)(0, 0x00ceba9c, 1, 0x00cebb2c) + 56 bytes
[19] m_interpreter.dll:public: void __thiscall ResolverFunctionDesc::CallFunction(int,struct mxArray_tag * * const,int,struct mxArray_tag * * const)(0, 0x00ceba9c, 1, 0x00cebb2c) + 93 bytes
[20] m_interpreter.dll:public: bool __thiscall Resolver::CallMFunction(int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *)(0, 1, 0x1285d760, 0) + 1388 bytes
[21] m_interpreter.dll:bool __cdecl inResolveMFunctionCall(struct _m_function_desc *,int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *,enum inMarshalType *,int,class mpsTypeSequenceNlhs const *,struct mxArray_tag * (__cdecl*)(int))(0x13f098c8, 0, 1, 0x1285d760) + 195 bytes
[22] m_interpreter.dll:private: bool __thiscall accelImpl::MFunctionCall(struct _accelOp * *)(0x00cec138, 0xc76fd258, 0x12bab540, 0x02e91560) + 179 bytes
[23] m_interpreter.dll:public: enum jitReturnFlags __thiscall accelImpl::Exec(void)(0xc76fd2c0, 0x12bab540, 1, 0x00cec4ec) + 205 bytes
[24] m_interpreter.dll:public: enum jitReturnFlags __thiscall accelCode::Call(enum inMarshalType *,int *)const (0x00cec23c, 0x00cec214, 0xc76fd10c, 0) + 128 bytes
[25] m_interpreter.dll:public: static bool __cdecl inJit::ExecuteHotSegment(struct _inJitAccelInfo *,enum opcodes *,int *,int *)(0x00cec2e4, 0x00cec398, 0x00cec348, 0x00cec4ec) + 1898 bytes
[26] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag volatile *,int *)(1, 0, 284, 0) + 338 bytes
[27] m_interpreter.dll:int __cdecl protected_inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 0, 101, 0) + 87 bytes
[28] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 0, 101, 0) + 274 bytes
[29] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x0320a2e0, 0x79588701, 0xc76fd5f4, 0xffffffff) + 916 bytes
[30] m_interpreter.dll:void __cdecl inRunMfile(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_mp *,struct inWorkSpace_tag *)(0, 0x00cec94c, 0, 0x00cec9dc) + 673 bytes
[31] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0, 0x00cec94c, 0) + 29 bytes
[32] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00cec94c, 0, 0x00cec9dc) + 28 bytes
[33] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00cec94c, 0, 0x00cec9dc) + 203 bytes
[34] m_interpreter.dll:void __cdecl mdCallFunction(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_MATLAB_fn *)(0, 0x00cec94c, 0, 0x00cec9dc) + 56 bytes
[35] m_interpreter.dll:public: void __thiscall ResolverFunctionDesc::CallFunction(int,struct mxArray_tag * * const,int,struct mxArray_tag * * const)(0, 0x00cec94c, 0, 0x00cec9dc) + 93 bytes
[36] m_interpreter.dll:public: bool __thiscall Resolver::CallMFunction(int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *)(0, 1, 0x12857e20, 0) + 1388 bytes
[37] m_interpreter.dll:bool __cdecl inResolveMFunctionCall(struct _m_function_desc *,int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *,enum inMarshalType *,int,class mpsTypeSequenceNlhs const *,struct mxArray_tag * (__cdecl*)(int))(0x1251f1a0, 0, 1, 0x12857e20) + 195 bytes
[38] m_interpreter.dll:private: bool __thiscall accelImpl::MFunctionCall(struct _accelOp * *)(0x00cecfe8, 0xc76fdce8, 0x015d56c0, 0x02e93c20) + 179 bytes
[39] m_interpreter.dll:public: enum jitReturnFlags __thiscall accelImpl::Exec(void)(0xc76fc310, 0x015d56c0, 1, 0x00ced39c) + 205 bytes
[40] m_interpreter.dll:public: enum jitReturnFlags __thiscall accelCode::Call(enum inMarshalType *,int *)const (0x00ced0ec, 0x00ced0c4, 0xc76fc25c, 0) + 128 bytes
[41] m_interpreter.dll:public: static bool __cdecl inJit::ExecuteHotSegment(struct _inJitAccelInfo *,enum opcodes *,int *,int *)(0x00ced194, 0x00ced248, 0x00ced1f8, 0x00ced39c) + 1898 bytes
[42] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag volatile *,int *)(1, 0, 31, 0) + 338 bytes
[43] m_interpreter.dll:int __cdecl protected_inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 0, 18, 0) + 87 bytes
[44] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 0, 18, 0) + 274 bytes
[45] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x03209da0, 0x79588701, 0xc76fc604, 0xffffffff) + 916 bytes
[46] m_interpreter.dll:void __cdecl inRunMfile(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_mp *,struct inWorkSpace_tag *)(0, 0x00ced7fc, 0, 0x00ced88c) + 673 bytes
[47] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0, 0x00ced7fc, 0) + 29 bytes
[48] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00ced7fc, 0, 0x00ced88c) + 28 bytes
[49] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00ced7fc, 0, 0x00ced88c) + 203 bytes
[50] m_interpreter.dll:void __cdecl mdCallFunction(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_MATLAB_fn *)(0, 0x00ced7fc, 0, 0x00ced88c) + 56 bytes
[51] m_interpreter.dll:public: void __thiscall ResolverFunctionDesc::CallFunction(int,struct mxArray_tag * * const,int,struct mxArray_tag * * const)(0, 0x00ced7fc, 0, 0x00ced88c) + 93 bytes
[52] m_interpreter.dll:public: bool __thiscall Resolver::CallMFunction(int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *)(0, 1, 0x02fb4c60, 0) + 1388 bytes
[53] m_interpreter.dll:bool __cdecl inResolveMFunctionCall(struct _m_function_desc *,int,int,class _m_operand * const,union m_operand_storage *,int,class _m_operand * const,union m_operand_storage *,int *,enum inMarshalType *,int,class mpsTypeSequenceNlhs const *,struct mxArray_tag * (__cdecl*)(int))(0x12431558, 0, 1, 0x02fb4c60) + 195 bytes
[54] m_interpreter.dll:private: bool __thiscall accelImpl::MFunctionCall(struct _accelOp * *)(0x00cede98, 0xc76fcd38, 0x12d41a60, 0x02e9c230) + 179 bytes
[55] m_interpreter.dll:public: enum jitReturnFlags __thiscall accelImpl::Exec(void)(0xc76fcda0, 0x12d41a60, 1, 0x00cee24c) + 205 bytes
[56] m_interpreter.dll:public: enum jitReturnFlags __thiscall accelCode::Call(enum inMarshalType *,int *)const (0x00cedf9c, 0x00cedf74, 0xc76fccec, 0) + 128 bytes
[57] m_interpreter.dll:public: static bool __cdecl inJit::ExecuteHotSegment(struct _inJitAccelInfo *,enum opcodes *,int *,int *)(0x00cee044, 0x00cee0f8, 0x00cee0a8, 0x00cee24c) + 1898 bytes
[58] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag volatile *,int *)(1, 0, 39, 0) + 338 bytes
[59] m_interpreter.dll:int __cdecl protected_inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 0, 17, 0) + 87 bytes
[60] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(1, 0, 17, 0) + 274 bytes
[61] m_interpreter.dll:int __cdecl inExecuteMFunctionOrScript(class Mfh_mp *,bool)(0x03209a20, 0x12b7fd01, 0xc76ff754, 0xffffffff) + 916 bytes
[62] m_interpreter.dll:void __cdecl inRunMfile(int,struct mxArray_tag * *,int,struct mxArray_tag * *,class Mfh_mp *,struct inWorkSpace_tag *)(0, 0x00cee4c4, 0, 0x00cee524) + 673 bytes
[63] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(struct _mdUnknown_workspace *,int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0, 0x00cee4c4, 0) + 29 bytes
[64] m_interpreter.dll:public: virtual void __thiscall Mfh_mp::dispatch_file(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00cee4c4, 0, 0x00cee524) + 28 bytes
[65] m_dispatcher.dll:public: virtual void __thiscall Mfh_file::dispatch_fh(int,struct mxArray_tag * *,int,struct mxArray_tag * *)(0, 0x00cee4c4, 0, 0x00cee524) + 203 bytes
[66] m_interpreter.dll:__catch$?inDispatchFromStack@@YAHHPBDHH@Z$0(769, 0x015e6214 "mio_analyze_save", 0, 0) + 744 bytes
[67] m_interpreter.dll:enum opcodes __cdecl inDispatchCall(char const *,int,int,int,int *,int *)(0x015e6214 "mio_analyze_save", 769, 0, 0) + 156 bytes
[68] m_interpreter.dll:int __cdecl inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag volatile *,int *)(2, 0, 0, 0) + 2739 bytes
[69] m_interpreter.dll:int __cdecl protected_inInterp(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(2, 0, 0, 0) + 87 bytes
[70] m_interpreter.dll:int __cdecl inInterPcodeSJ(enum inDebugCheck,int,int,enum opcodes,struct inPcodeNest_tag *,int *)(2, 0, 0, 0) + 274 bytes
[71] m_interpreter.dll:_inInterPcode(2, 0xc76ffbac, 0, 0x12b43320 "mio_analyze_save\n") + 162 bytes
[72] m_interpreter.dll:enum inExecutionStatus __cdecl in_local_call_eval_function(int *,struct _pcodeheader *,int *,struct mxArray_tag * * const,enum inDebugCheck,bool)(0x00cef2bc, 0x00cef32c, 0x00cef358, 2) + 152 bytes
[73] m_interpreter.dll:enum inExecutionStatus __cdecl inEvalStringWithIsVarFcn(struct _memory_context *,char const *,enum EvalType,int,struct mxArray_tag * * const,enum inDebugCheck,struct _pcodeheader *,int *,bool (__cdecl*)(void *,char const *),void *,bool)(0x7ac2177c, 0x12b43320 "mio_analyze_save\n", 0, 0) + 2454 bytes
[74] m_interpreter.dll:enum inExecutionStatus __cdecl inEvalCmdWithLocalReturnandtype(char const *,int *,enum inDebugCheck,bool)(0x12b43320 "mio_analyze_save\n", 0, 2, 0) + 107 bytes
[75] m_interpreter.dll:_inEvalCmdNoEnd(0x12b43320 "mio_analyze_save\n", 0, 0xc704ecaa, 0x7ab9e7f0) + 20 bytes
[76] bridge.dll:enum inExecutionStatus __cdecl ThrowSignal(char const *)(0x12b43320 "mio_analyze_save\n", 0xc704ebe6, 0x014e4428, 0x014e43c8) + 77 bytes
[77] bridge.dll:__catch$_mnParser$0(0xc7330b64, 0x014e43c8, 0x014e43c8, 0) + 292 bytes
[78] mcr.dll:public: void __thiscall mcrInstance::mnParser(void)(0xc7330bba, 0x004043f0, 336710, 0) + 62 bytes
[79] MATLAB.exe:0x00401414(4194304, 0, 336710, 10)
[80] MATLAB.exe:0x00401733(0, 0, 0x7ffdb000, 0x8054b6ed)
[81] kernel32.dll:0x7c817077(0x00401910, 0, 0x78746341, 32)
这似乎是那个特定文件夹的问题。
还要注意,如果我只是将 FILE.raw 复制到另一个文件夹中,程序运行不会出错。
有人知道发生了什么吗?
【问题讨论】:
-
尝试删除
/dummyfolder并重新设置。 -
我试过了。它没有用。
-
您能否粘贴完整的堆栈跟踪或检查是否涉及任何第 3 方二进制文件?您运行什么代码,您自己编写的任何 mex 函数?
-
科学仪器的构造函数编写了生成 .raw 文件的 mex 函数。不过以前从来没有遇到过这个问题。