Discussion:
[Msys2-users] win7x64: Strace doesn't and ncurses cannot find terminfo db
Computer Jock
9 years ago
Permalink
I just joined this mailing list and I hope I have not misunderstood what
it's for... If I should be asking somewhere else, please let me know so
I don't bother anyone with inappropriate posts.

I've installed Msys2 and am using the 64-bit build environment on win7 x64

Problem 1:

t.c:
main(){ int f = open("a.exe",0); }

$ gcc t.c
$ strace a.exe
create_child: a.exe
--- Process 7648 created
--- Process 7648 loaded C:\Windows\System32\ntdll.dll at 0000000076F70000
--- Process 7648 loaded C:\Windows\System32\kernel32.dll at 0000000076E50000
--- Process 7648 loaded C:\Windows\System32\KernelBase.dll at
000007FEFCE20000
--- Process 7648 loaded C:\Windows\System32\msvcrt.dll at 000007FEFD330000
--- Process 7648 loaded D:\msys64\mingw64\bin\libwinpthread-1.dll at
0000000064940000
--- Process 7648 loaded C:\Windows\System32\user32.dll at 0000000076D50000
--- Process 7648 loaded C:\Windows\System32\gdi32.dll at 000007FEFD3D0000
--- Process 7648 loaded C:\Windows\System32\lpk.dll at 000007FEFD810000
--- Process 7648 loaded C:\Windows\System32\usp10.dll at 000007FEFF1B0000
--- Process 7648 loaded C:\Windows\System32\imm32.dll at 000007FEFD440000
--- Process 7648 loaded C:\Windows\System32\msctf.dll at 000007FEFD470000
--- Process 7648 exited with status 0x0


No trace of the open() syscall. Am I misunderstanding what strace is
supposed to do?

Problem 2:

t.c:
#include <ncurses/curses.h>
main() { initscr(); }

$ gcc t.c -lncurses
$ ./a
Error opening terminal: xterm.

Using sysinternal's procmon, I see an attempt to access
"D:\mingw64\share\" but my Msys2 installation root is actually D:\msys64

Making a windows symlink: D:\mingw64 => D:\msys64\mingw64

Then it works; I get no error message about opening terminal xterm.

Pacman -Q says I've installed:
mingw-w64-x86_64-ncurses 6.0.20160220-2
ncurses 6.0.20160220-1
mingw-w64-x86_64-termcap 1.3.1-2

It seems to me that ncurses is not figuring out that my Msys2 root
starts at D:\msys64\
Everything else in my Msys2 installation seems to be working properly
and has been for several months
David Grayson
9 years ago
Permalink
Hello.

Since MSYS2 supports applications with 3 different runtime
environments (msys-2.0-dll, MinGW 32-bit, and MinGW 64-bit) you always
need to understand which environment you are using or else you might
get confused. In this case, strace is probably in /usr/bin, which
means it uses msys-2.0.dll, and it will probably only recognize
Cygwin-type system calls. I don't know if a MinGW strace is
available.

--David
...
Loading...