Hi everyone,
I have been playing around a bit with qt under 15.08 (linux) recently. One thing I noticed is that the testcases do not run properly anymore. I had to adjust my runscripts (and the qt testcases I tried) in a fashion such as the non-qt wm test in the gems repo. Can anyone confirm this or did I screw up something?
Another thing I noticed is, that if I add a number of qt components (in addition to quite a number of "conventional" ones) I get exceptions thrown in lx_call() (/base-linuxhttps://github.com/genodelabs/genode/tree/master/repos/base-linux/src/base/ipc/ipc.cc****). - This is non deterministic: everytime I run the config, I get another one of the "available" exceptions in the method. The number of components I can add until the execution of the config fails depends on the combination of compontens. Can anyone imagine why this is happening? Could this be memory related?
Cheers Marcus
Hello Marcus,
On Mon, Sep 28, 2015 at 09:50:38PM +0200, Marcus Nolte wrote:
I have been playing around a bit with qt under 15.08 (linux) recently. One thing I noticed is that the testcases do not run properly anymore. I had to adjust my runscripts (and the qt testcases I tried) in a fashion such as the non-qt wm test in the gems repo. Can anyone confirm this or did I screw up something?
I expect your issue is related to
https://github.com/genodelabs/genode/issues/1695
in our issue tracker. Could you confirm if the attached patch helps?
Another thing I noticed is, that if I add a number of qt components (in addition to quite a number of "conventional" ones) I get exceptions thrown in lx_call() (/base-linuxhttps://github.com/genodelabs/genode/tree/master/repos/base-linux/src/base/ipc/ipc.cc****).
- This is non deterministic: everytime I run the config,
I get another one of the "available" exceptions in the method. The number of components I can add until the execution of the config fails depends on the combination of compontens. Can anyone imagine why this is happening? Could this be memory related?
The error messages include the plain error-code value, which could be matched to your errno.h. Maybe you break one of the file descriptor limits of your Linux system. Please check your log or post some snippets to the list.
Regards
Hey,
Am 29.09.2015 um 08:47 schrieb Christian Helmuth:
Hello Marcus,
On Mon, Sep 28, 2015 at 09:50:38PM +0200, Marcus Nolte wrote:
I have been playing around a bit with qt under 15.08 (linux) recently. One thing I noticed is that the testcases do not run properly anymore. I had to adjust my runscripts (and the qt testcases I tried) in a fashion such as the non-qt wm test in the gems repo. Can anyone confirm this or did I screw up something?
I expect your issue is related to
https://github.com/genodelabs/genode/issues/1695
in our issue tracker. Could you confirm if the attached patch helps?
Yup, confirmed.
Another thing I noticed is, that if I add a number of qt components (in addition to quite a number of "conventional" ones) I get exceptions thrown in lx_call() (/base-linuxhttps://github.com/genodelabs/genode/tree/master/repos/base-linux/src/base/ipc/ipc.cc****).
- This is non deterministic: everytime I run the config,
I get another one of the "available" exceptions in the method. The number of components I can add until the execution of the config fails depends on the combination of compontens. Can anyone imagine why this is happening? Could this be memory related?
The error messages include the plain error-code value, which could be matched to your errno.h. Maybe you break one of the file descriptor limits of your Linux system. Please check your log or post some snippets to the list.
Regards
Indeed. Thanks a lot... sometimes solutions are so simple.
Best Marcus
Maybe just one more question out of interest for a better understanding of "what's going on":
In my case I stumbled upon the file descriptor limit when using qt. Removing a certain number of qt-enabled components fixed the issue. Removing "conventional" componentes (most of them with libc dependency) did not do any good.
Does the qt dependency cause that many additional sockets / temporary files / whatever to be created, compared to "normal" components?
Hello Marcus,
On Tue, Sep 29, 2015 at 02:38:46PM +0200, Marcus Nolte wrote:
In my case I stumbled upon the file descriptor limit when using qt. Removing a certain number of qt-enabled components fixed the issue. Removing "conventional" componentes (most of them with libc dependency) did not do any good.
Does the qt dependency cause that many additional sockets / temporary files / whatever to be created, compared to "normal" components?
I guess that the core component runs out of file/socket descriptors for RAM dataspaces. You may check by running a scenario with many components and executing
ls -l /proc/$(pidof core)/fd
which lists all file descriptors in use by the core component. I think it's needless to say you may also investigate your Qt components this way. For me
make run/qt5
which runs just qt_launchpad produces
440 fds in core
It's also worthwhile to look at the address space of qt_launchpad. This single component uses about 60 mmap'd files for the binary, ld.lib.so, all libraries, and stacks of created threads.
Regards