Matlab 命令行 - 一些程序在退出时崩溃
Matlab command line - some programs crash on exit
当我尝试从命令行退出某些 Matlab 脚本时,或者当我在脚本中放置 "exit force" 时,某些 Matlab 脚本会崩溃。 (奇怪的是,我无法确定是什么原因导致某些程序崩溃,而另一些则不会。)例如这是一个非常简单的 Matlab 程序 (bugtest.m),在 Mac OS:
上表现出这种行为
function bugtest(ifile, ofile)
data = csvread(ifile, 1, 0); % skip the first line
csvwrite(ofile, data);
end
当我从命令行使用 Matlab 这个脚本,然后在出现 Matlab 提示符时键入 exit,它工作正常:
bash> /Applications/MATLAB_R2018b.app/bin/matlab -nodisplay -nojvm -r "bugtest('z2.csv','z3.csv')"
[Matlab copyright message]
>> exit
exit
但是当我在命令行中包含退出时,它崩溃了(取决于脚本,但脚本 bugtest.m 总是崩溃):
bash> /Applications/MATLAB_R2018b.app/bin/matlab -nodisplay -nojvm -r "bugtest('z2.csv','z3.csv');exit"
[Matlab copyright message]
--------------------------------------------------------------------------------
Segmentation violation detected at Thu Aug 22 15:55:40 2019 +0930
--------------------------------------------------------------------------------
Configuration:
Crash Decoding : Disabled - No sandbox or build area path
Crash Mode : continue (default)
[etc]
如果 bugtest.m 中有一个 "exit force",也会发生同样的事情。还有其他 Matlab 脚本在命令行中运行良好。
这个问题的原因是什么,我该如何解决?
对我来说,这看起来像是一个计时问题,其中一个线程仍在完成对文件的写入,而另一个线程开始拆除运行时。我这样说是因为当手动输入 exit
时,在 运行 csvwrite
之后已经过去了一段时间,并且不会发生错误。
可以在脚本中模拟这种情况,方法是在调用 exit
.
之前添加一个小暂停,例如 pause(1)
显然这是一个应该报告给 MathWorks 的错误,以便他们可以修复它。
当我尝试从命令行退出某些 Matlab 脚本时,或者当我在脚本中放置 "exit force" 时,某些 Matlab 脚本会崩溃。 (奇怪的是,我无法确定是什么原因导致某些程序崩溃,而另一些则不会。)例如这是一个非常简单的 Matlab 程序 (bugtest.m),在 Mac OS:
上表现出这种行为function bugtest(ifile, ofile)
data = csvread(ifile, 1, 0); % skip the first line
csvwrite(ofile, data);
end
当我从命令行使用 Matlab 这个脚本,然后在出现 Matlab 提示符时键入 exit,它工作正常:
bash> /Applications/MATLAB_R2018b.app/bin/matlab -nodisplay -nojvm -r "bugtest('z2.csv','z3.csv')"
[Matlab copyright message]
>> exit
exit
但是当我在命令行中包含退出时,它崩溃了(取决于脚本,但脚本 bugtest.m 总是崩溃):
bash> /Applications/MATLAB_R2018b.app/bin/matlab -nodisplay -nojvm -r "bugtest('z2.csv','z3.csv');exit"
[Matlab copyright message]
--------------------------------------------------------------------------------
Segmentation violation detected at Thu Aug 22 15:55:40 2019 +0930
--------------------------------------------------------------------------------
Configuration:
Crash Decoding : Disabled - No sandbox or build area path
Crash Mode : continue (default)
[etc]
如果 bugtest.m 中有一个 "exit force",也会发生同样的事情。还有其他 Matlab 脚本在命令行中运行良好。
这个问题的原因是什么,我该如何解决?
对我来说,这看起来像是一个计时问题,其中一个线程仍在完成对文件的写入,而另一个线程开始拆除运行时。我这样说是因为当手动输入 exit
时,在 运行 csvwrite
之后已经过去了一段时间,并且不会发生错误。
可以在脚本中模拟这种情况,方法是在调用 exit
.
pause(1)
显然这是一个应该报告给 MathWorks 的错误,以便他们可以修复它。