Run environment in Qt Creator
-
@aha_1980 I'm running a pretty recent version of Creator, 4.9.1, but I can't see how to open a terminal with run environment set up. I do see the checkbox for 'Run in terminal', and there is a field 'Run configuration', which currently holds the name of the executable. Is that related to what you have mentioned? Can you give me some pointers?
I don't have another Qt version in LD_LIBRARY_PATH.
Thanks
-
In Creator 4.10 it's here:
It may look a bit different in 4.9, but the Projects context menu on a file contains that entry.
Regards
@aha_1980
When I open a terminal with any one of the three environment options (Build, System, Run) and execute the program at the command line, it doesn't crash. It seems that for the purposes of running my program the three environments are all equivalent. When it is invoked by one of the green arrows in Creator, it crashes. -
@aha_1980
When I open a terminal with any one of the three environment options (Build, System, Run) and execute the program at the command line, it doesn't crash. It seems that for the purposes of running my program the three environments are all equivalent. When it is invoked by one of the green arrows in Creator, it crashes.@gibbogle said in Run environment in Qt Creator:
@aha_1980
When I open a terminal with any one of the three environment options (Build, System, Run) and execute the program at the command line, it doesn't crash. It seems that for the purposes of running my program the three environments are all equivalent. When it is invoked by one of the green arrows in Creator, it crashes.Ok, so we still have no solution for your problem, but we know that the environment is unguilty.
Does that also happen if you create a "Hello World" example with the wizards?
And coming back to @JonB's
strace
: you can create a custom run configuration (Project > Build & Run > Run > Run configuration > Add > Custom) and see which output you get, hopefully that gives some insight?Regards
-
@gibbogle said in Run environment in Qt Creator:
@aha_1980
When I open a terminal with any one of the three environment options (Build, System, Run) and execute the program at the command line, it doesn't crash. It seems that for the purposes of running my program the three environments are all equivalent. When it is invoked by one of the green arrows in Creator, it crashes.Ok, so we still have no solution for your problem, but we know that the environment is unguilty.
Does that also happen if you create a "Hello World" example with the wizards?
And coming back to @JonB's
strace
: you can create a custom run configuration (Project > Build & Run > Run > Run configuration > Add > Custom) and see which output you get, hopefully that gives some insight?Regards
@aha_1980
I am able to build and run the examples, and also an application to test Qt3d functionality that I made from a couple of the examples.I set up a custom run configuration (thanks for explaining that), but when I run it, a couple of 'Permission denied' errors are generated, one apparently from execve, the other from fstat (unfortunately it does not seem to be possible to copy-and-paste from the terminal), so strace "exited with 1".
-
@aha_1980
I am able to build and run the examples, and also an application to test Qt3d functionality that I made from a couple of the examples.I set up a custom run configuration (thanks for explaining that), but when I run it, a couple of 'Permission denied' errors are generated, one apparently from execve, the other from fstat (unfortunately it does not seem to be possible to copy-and-paste from the terminal), so strace "exited with 1".
-
@aha_1980
I am able to build and run the examples, and also an application to test Qt3d functionality that I made from a couple of the examples.I set up a custom run configuration (thanks for explaining that), but when I run it, a couple of 'Permission denied' errors are generated, one apparently from execve, the other from fstat (unfortunately it does not seem to be possible to copy-and-paste from the terminal), so strace "exited with 1".
@gibbogle said in Run environment in Qt Creator:
it does not seem to be possible to copy-and-paste from the terminal
It is possible: mark text in terminal and press Ctrl-Shift-c to copy (to paste into terminal use Ctrl-Shift-v). Or use context menu of your terminal.
-
@gibbogle ok, so if the examples work, it must be your project.
Have you already wiped the build folder and .pro.user and rebuild your project?
Are you linking external libs?
Regards
-
@gibbogle said in Run environment in Qt Creator:
it does not seem to be possible to copy-and-paste from the terminal
It is possible: mark text in terminal and press Ctrl-Shift-c to copy (to paste into terminal use Ctrl-Shift-v). Or use context menu of your terminal.
-
@jsulm
When I do Ctrl-Shift-c all that happens is a ^C is displayed.
I'm not sure what the context menu of the terminal is. If I right-click at the top I just get Minimize, Maximize, Move etc.@gibbogle said in Run environment in Qt Creator:
If I right-click at the top I just get Minimize
not at the top, but inside the terminal.
-
@gibbogle said in Run environment in Qt Creator:
If I right-click at the top I just get Minimize
not at the top, but inside the terminal.
@jsulm
Sorry, I'm still not with you, right-click inside the terminal just highlights text. Is it possible that I have a different terminal program from your one? In the list of Applications on Ubuntu 18.04 I see XTerm and UXTerm. They both behave the same way. Do they need to be configured to have the behaviour you describe? -
@jsulm
Sorry, I'm still not with you, right-click inside the terminal just highlights text. Is it possible that I have a different terminal program from your one? In the list of Applications on Ubuntu 18.04 I see XTerm and UXTerm. They both behave the same way. Do they need to be configured to have the behaviour you describe? -
@gibbogle XTerm and UXTerm are not the standard terminals on default Ubuntu installation. You should try the one Ubuntu provides by default (I think it's the one from Gnome).
@jsulm
I'll have a look around, but these are the only ones that Ubuntu 18.04 shows in the list of installed apps (by clicking on the 3x3-dot-grid icon.) There are odd things about this version, e.g. I installed gedit, but it doesn't show up in the list.Edit: I had to install gnome-terminal, and I see that it provides some useful features.
-
Having another look at this:
Although I installed gnome-terminal, which supports copy-and-paste, when I run the Custom Executable in Qt Creator is still uses XTerm, which doesn't support copying.
When I run with Custom Executable a great number of messages are generated, and they don't mean much to me. I do see, however, reference to libraries in /usr/local/Qt-4.8.6/lib, and in /usr/lib/x86_64-linux-gnu. Neither of these directories is in my LD_LIBRARY_PATH, and I don't know why they are being searched. I do have Qt-4.8.6 installed. I am suspecting that somehow when invoked inside Creator, the program is doing something with 4.8.6 libraries, and this is causing the crash.
A reminder: the program runs correctly at a terminal. -
Having another look at this:
Although I installed gnome-terminal, which supports copy-and-paste, when I run the Custom Executable in Qt Creator is still uses XTerm, which doesn't support copying.
When I run with Custom Executable a great number of messages are generated, and they don't mean much to me. I do see, however, reference to libraries in /usr/local/Qt-4.8.6/lib, and in /usr/lib/x86_64-linux-gnu. Neither of these directories is in my LD_LIBRARY_PATH, and I don't know why they are being searched. I do have Qt-4.8.6 installed. I am suspecting that somehow when invoked inside Creator, the program is doing something with 4.8.6 libraries, and this is causing the crash.
A reminder: the program runs correctly at a terminal. -
@jsulm
It looks like a few hundred lines, and unfortunately I can't copy and paste them, unless I can find a way to make Creator use the gnome terminal program. ...
OK, I just found out how to do that. This is horrendously long (more than 800 lines).Oh, there is a strict limit on the number of characters. I'll copy the first lines and the last lines.
First 35 lines:
execve("/home/gib/vspheroid-fem/build-vspheroid-Qt3d-Release/vspheroid-Qt3d-first-try", ["/home/gib/vspheroid-fem/build-vs"...], 0x7ffdf2a51980 /* 55 vars */) = 0
brk(NULL) = 0x5618cdaba000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/tls/x86_64/x86_64/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/tls/x86_64/x86_64", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/tls/x86_64/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/tls/x86_64", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/tls/x86_64/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/tls/x86_64", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/tls/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/tls", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/x86_64/x86_64/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/x86_64/x86_64", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/x86_64/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/x86_64", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/x86_64/libqwt.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/home/gib/bin/x86_64", 0x7ffd269838a0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/home/gib/bin/libqwt.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\32\7\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0775, st_size=1626000, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fd843ba8000
mmap(NULL, 3432576, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd84363c000
mprotect(0x7fd843775000, 2097152, PROT_NONE) = 0
mmap(0x7fd843975000, 53248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x139000) = 0x7fd843975000
mmap(0x7fd843982000, 128, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd843982000
close(3) = 0
openat(AT_FDCWD, "/home/gib/vspheroid-fem/build/Release/libvspheroid-fem.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p$\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=521272, ...}) = 0
mmap(NULL, 5435000, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fd84310d000
mprotect(0x7fd84318a000, 2093056, PROT_NONE) = 0
mmap(0x7fd843389000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7c000) = 0x7fd843389000
mmap(0x7fd84338c000, 2817656, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fd84338c000
close(3) = 0Last 21 lines
rt_sigaction(SIGRTMIN, {sa_handler=0x7fd839300cb0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7fd83930d890}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7fd839300d50, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fd83930d890}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
futex(0x7fd8392fa0c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
brk(NULL) = 0x5618cdaba000
brk(0x5618cdadb000) = 0x5618cdadb000
rt_sigaction(SIGRT_32, {sa_handler=0x7fd832637820, sa_mask=~[RTMIN RT_1], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fd83b0c3f20}, NULL, 8) = 0
futex(0x7fd833f45f38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0x7fd833f45f38, FUTEX_WAKE_PRIVATE, 2147483647) = 0
brk(0x5618cdafc000) = 0x5618cdafc000
openat(AT_FDCWD, "/dev/urandom", O_RDONLY|O_CLOEXEC) = 3
read(3, "19\374\220", 4) = 4
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
fstat(2, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_ACCERR, si_addr=0x7fd83c15e5c0} ---
+++ killed by SIGSEGV (core dumped) +++ -
There is something funny about the directories being searched. For example, in the above you can see:
/home/gib/bin/x86_64/libqwt.so.6
In fact that library is in /home/gib/bin, and there is no x86_64 subdirectory, in fact there are no subdirectories to /home/gib/bin.
In Projects > Build & Run > Run > Run Environment > Details I open a terminal by clicking Open Terminal, then inspect the LD_LIBRARY_PATH:gib@gigabyte:~$ echo $LD_LIBRARY_PATH
/home/gib/Qt5.13.0/5.13.0/gcc_64/lib:/home/gib/qwt-6.1.3/lib:/home/gib/bin:/home/gib/OpenCMISS/opencmiss/install/lib:/home/gib/binYou'll see that /home/gib/bin appears twice. That's because I found that I had to add the variable LD_LIBRARY_PATH with value /home/gib/bin to the Run environment, because otherwise the execution fails with the message that libqwt.so.6 cannot be found. This makes no sense to me, because /home/gib/bin is already in the path. I suspect that this odd behaviour is related to the crashing. It is as if LD_LIBRARY_PATH is somehow being corrupted.
Edit: I forgot to mention that libqwt.so.6 is in /home/gib/bin.