MinGW Make导致堆栈转储问题

4
当我使用MinGW make执行Unix工具时,会出现StackDump文件:
错误信息:
sed -i -e 's/reveal.js\/css\/theme\/simple.css/reveal.js\/css\/theme\/moon.css/' index.html
      0 [main] sed 8744 open_stackdumpfile: Dumping stack trace to sed.exe.stackdump
make: *** [index.html] Error 5

sed.exe.stackdump:

MSYS-1.0.12 Build:2012-07-05 14:56
Exception: STATUS_ACCESS_VIOLATION at eip=68008DAA
eax=03019001 ebx=60EA4124 ecx=00692788 edx=00000150 esi=00000000 edi=60EA00D4
ebp=0028FE9C esp=0028FE78 program=c:\Program Files (x86)\Git\bin\sed.exe
cs=0023 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame     Function  Args
0028FE9C  68008DAA  (60EA00D4, 00000150, 0028FEEC, 680044EA)
0028FEEC  6800466B  (00000000, 00000000, 0028FF2C, 00517CF8)
0028FF0C  68004C5F  (00401C28, 00000000, 5C952BA0, FFFFE001)
0028FF2C  68004C98  (00000000, 00000000, 928A67BF, FFFFF800)
0028FF5C  00517C08  (00401C28, FFFFE001, 00000001, 00000000)
0028FF8C  0040103D  (7FFDE000, 0028FFDC, 771F0BBB, 7FFDE000)
0028FF98  74F6919F  (7FFDE000, 99B8EAFE, 00000000, 00000000)
0028FFDC  771F0BBB  (FFFFFFFF, 771DC9D0, 00000000, 00000000)
0028FFEC  771F0B91  (00401000, 7FFDE000, 00000000, 78746341)
End of stack trace

当我尝试使用诸如rmmvcp等工具时,出现非常相似的错误。我该怎么做才能修复这些错误?这使得在Windows上进行开发变得不可能。

我正在使用的make二进制文件位于C:\MinGW\msys\1.0\bin\make.exe,版本信息如下:

GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i686-pc-msys

1
你使用的是哪个版本的 make?你是使用 msysgit 中包含的版本(并安装在 c:\Program Files (x86)\Git\bin 中)吗?还是使用 MSYS 版本?或者是本机 Windows 版本? - Ross Ridge
2个回答

3
我猜测你的问题是msysgit版本的sed正在使用C:\MinGW\msys\1.0\bin中MSYS DLL的版本,而不是c:\Program Files (x86)\Git\bin中的DLL版本。试着改变你的PATH,使得你的makefile使用C:\MinGW\msys\1.0\bin中的sed,而不是msysgit的版本。

2

我发现了问题。实际上我使用的是MSYS版本的make工具,但是sed二进制文件是与cmder一起发布的那个版本。这种不匹配导致了堆栈转储错误。我纠正了路径,现在已经可以正常工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接