Hi there Genodians. I have thoroughly tested the sample programs provided for testing in the Gems section. Specifically, I have reviewed the "mixer_gui_qt_test" program as a practical example of Qt5.
Afterwards, I decided to add a webview to this program for further practice. To achieve this, I needed to use webengine. I manually added the lib.so files to the build directory and also included the resource.tar files in this directory. To extract these files, I used the following command:
<config> <vfs> <dir name="dev"> <log/> <inline name="rtc">2018-01-01 00:01</inline> </dir> <dir name="pipe"> <pipe/> </dir> <tar name="qt5_dejavusans.tar"/> <tar name="qt5_libqgenode.tar"/> <tar name="qt5_webengine_qml.tar"/> <tar name="qt5_webengine_resources.tar"/> <tar name="qt5_webengine_translations.tar"/> </vfs> <libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe" rtc="/dev/rtc"/> </config>
However, after building the program and executing it, I encountered the following error when using the QWebEngineView class functions:
[init -> webview_test] Error: no plugin found for read(-1)
Your assistance in resolving this issue would be greatly appreciated.
Thank you for your attention to this matter.
Warm regards, Hamed
Hi,
for testing in the Gems section. Specifically, I have reviewed the "mixer_gui_qt_test" program as a practical example of Qt5.
Afterwards, I decided to add a webview to this program for further practice.
I don't have experience with Qt but maybe I can get the ball rolling by suggesting general ideas:
<config> <vfs> <dir name="dev"> <log/> <inline name="rtc">2018-01-01 00:01</inline> </dir> <dir name="pipe"> <pipe/> </dir> <tar name="qt5_dejavusans.tar"/> <tar name="qt5_libqgenode.tar"/> <tar name="qt5_webengine_qml.tar"/> <tar name="qt5_webengine_resources.tar"/> <tar name="qt5_webengine_translations.tar"/> </vfs> <libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe" rtc="/dev/rtc"/> </config>
However, after building the program and executing it, I encountered the following error when using the QWebEngineView class functions:
[init -> webview_test] Error: no plugin found for read(-1)
Do you have the information as to exactly where in the code the error is issued (QWebEngineView..) ?
If not, these basic techniques come to mind:
1) the mixer_qui_qt code references this file path: "/config/mixer.config" But that path does not seem to be configured in the vfs config above. Is it handled by one of the .tar files ? Better run a comparison of the original vfs config and your variant of it, side by side, re. mixer.config and other paths.
2) if it was me I would go at it the "brutalist" way :-) and add line by line tracing in main.cpp. That is to say, copy-paste the Genode::log("start") line after qpa_init(), changing the log text to "init done", and so on and so forth until I'd find out which routine is responsible for the failed read().
3) best would be to use the debugger ("monitor") to find out exactly which part of the code is involved ; I don't know if the monitor is currently able to set a 'breakpoint' (in this case, the breakpoint would be set in or near read()), I think that's planned for the future
Or you could recompile the Genode libc "vfs plugin" to augment the "no plugin found for read(-1)" error message with a call to Genode::backtrace(), which would be functionally similar to a debugger hitting a breakpoint and displaying the information I guess
Also, rather than build your scenario based on mixer_qt_gui, maybe it could be based on Falkon or (preferably) a more simple scenario that uses QWebEngineView ?
HTH a bit,
Cédric
Hi Cedric,
I'm only experiencing issues when using WebEngine functions. That is, the object I'm interested in is created, but the first function to be used encounters the error I mentioned, leaving the program incomplete.
I fixed the file path reference "/config/mixer.config" and there's no issue about that. Like you, I intended to tackle debugging the brutalist way :) However, the serious problem is that in this process, I'm interacting with the Qt5WebEngine library, through which the debug path also passes. Each build of it takes around 10 hours for me, practically making the debugging process impossible.
In any case, I appreciate your response.
Thank you, Hamed
Hi Hamed,
here are two Falkon run scripts which might help for comparison:
https://github.com/cproc/genode-world/blob/qtwebengine-20240510/run/falkon_f... https://github.com/cproc/genode-world/blob/qtwebengine-20240510/run/falkon.r...
Christian
On 08.05.24 15:36, hamed_khandagh--- via users wrote:
Hi there Genodians. I have thoroughly tested the sample programs provided for testing in the Gems section. Specifically, I have reviewed the "mixer_gui_qt_test" program as a practical example of Qt5.
Afterwards, I decided to add a webview to this program for further practice. To achieve this, I needed to use webengine. I manually added the lib.so files to the build directory and also included the resource.tar files in this directory. To extract these files, I used the following command:
<config> <vfs> <dir name="dev"> <log/> <inline name="rtc">2018-01-01 00:01</inline> </dir> <dir name="pipe"> <pipe/> </dir> <tar name="qt5_dejavusans.tar"/> <tar name="qt5_libqgenode.tar"/> <tar name="qt5_webengine_qml.tar"/> <tar name="qt5_webengine_resources.tar"/> <tar name="qt5_webengine_translations.tar"/> </vfs> <libc stdout="/dev/log" stderr="/dev/log" pipe="/pipe" rtc="/dev/rtc"/> </config>
However, after building the program and executing it, I encountered the following error when using the QWebEngineView class functions:
[init -> webview_test] Error: no plugin found for read(-1)
Your assistance in resolving this issue would be greatly appreciated.
Thank you for your attention to this matter.
Warm regards, Hamed _______________________________________________ users mailing list -- users@lists.genode.org To unsubscribe send an email to users-leave@lists.genode.org Archived at https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/mes...
Thank you, Christian.
I hadn't seen this branch before, and when I did, it seemed very promising to me. However, I encountered two issues:
The Qt5WebEngine build process is very time-consuming, taking about 14 hours on my system. Is there a way to speed up this process?
I ran both programs, and they seem very helpful for my problem. However, the "falkon_from_depot" program faced the following output:
[init -> falkon] 0x1000000 .. 0x10ffffff: linker area [init -> nic_router] [uplink] dynamic IP config: none [init -> nic_router] [uplink] NIC sessions: 0 [init -> nic_router] [downlink] static IP config: interface 10.0.3.1/24, gateway 0.0.0.0, P2P 0 [init -> nic_router] [downlink] NIC sessions: 0 [init -> drivers -> nic_drv] MAC address 02:00:00:00:00:01 [init -> drivers -> nic_drv] using tap device "tap0" [init -> nic_router] [uplink] NIC sessions: 1 Warning: invalid signal-context capability Warning: invalid signal-context capability [init -> falkon] Error: LD: symbol not found: 'QWebChannelAbstractTransport::metaObject() const' [init -> falkon] Error: Uncaught exception of type 'Linker::Not_found' [init -> falkon] Warning: abort called - thread: ep
And the program practically doesn't work. What suggestions do you have to solve this problem?
Thanks for your time. Hamed
And
I encountered the following error while reviewing the second provided link for the Falkon program:
in function `QV4::Moth::BytecodeGenerator::addInstructionHelper(QV4::Moth::Instr::Type, QV4::Moth::Instr const&, int)': undefined reference to `QV4::Moth::InstrInfo::argumentCount'
Please advise on resolving this issue.
Regards, Hamed
Hi Hamed,
I would suggest to continue debugging with 'falkon.run', which always uses the same qt5 source tree location in the 'contrib' directory whereas 'falkon_from_depot.run' creates a new copy in a different depot directory when you change something in the Qt source, and to install 'ccache' and enabe it in 'build/x86_64/etc/build.conf' (CCACHE = yes) if you haven't done so already. This should at least reduce the time to rebuild QtWebEngine.
I do not get the errors you mentioned on my system, but I remember seeing similar errors in the past when the build process got killed because the system ran out of RAM and left some corrupt object files or shared libraries behind. Could this have happened on your system perhaps? If not, which Genode revision are you using and which Linux distribution?
Christian
On 14.05.24 10:25, hamed_khandagh--- via users wrote:
And
I encountered the following error while reviewing the second provided link for the Falkon program:
in function `QV4::Moth::BytecodeGenerator::addInstructionHelper(QV4::Moth::Instr::Type, QV4::Moth::Instr const&, int)': undefined reference to `QV4::Moth::InstrInfo::argumentCount'
Please advise on resolving this issue.
Regards, Hamed _______________________________________________ users mailing list -- users@lists.genode.org To unsubscribe send an email to users-leave@lists.genode.org Archived at https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/mes...
Thank you, Christian.
You predicted correctly. Due to the RAM running out during the build, I had to rebuild process multiple times. After receiving your message, I created a new source tree code and attempted the build with more RAM, and it worked out. I'm grateful for that.
Just a few questions:
1. Can the project be run with the Nova kernel and PC board? With the release notes 23.08, it seems that in the current version of Genode, `pc_nic_drv` has replaced `ipxe_nic_drv`. In the provided source code in the PC section, I have `pc_nic_drv`, and when building for the PC board, I encounter the following error:
Error: incomplete or missing recipe (genodelabs/src/ipxe_nic_drv)
Which version of Genode are you using?
2. I've created the `tap0` network, but it's still not connecting (I also attempted to trace network packets using Wireshark to troubleshoot, but I'm not receiving any packets). Does any part of the code need further development, or is there an issue with my initial setup?
The command I used to build the project:
sh: make -C build/x86_64 run/falkon KERNEL=linux BOARD=linux log=core
Regards, Hamed
Hello Christian,
The build of Falkon with the Nova kernel on a PC board has been completed.
I apologize for any confusion caused by my previous email, which was sent in haste because I have recently started working with the Genode framework and need to become more fully acquainted with its build system.
By adding certain components to the source code, I have been able to run Falkon for the Nova kernel on a PC board. The e1000 network is also correctly recognized and receives the network address via DHCP correctly. However, I still do not have network access from within QEMU to the outside and vice versa.
Thank you for your understanding.
Best regards, Hamed
Hi Hamed,
I updated the Falkon run scripts on this git branch:
https://github.com/cproc/genode-world/tree/qtwebengine-20240517
Loading web pages on NOVA in QEMU works for me now. I'm using the current Genode staging branch.
For base-linux you need to configure NAT or add tap0 to a bridge.
I'm using these commands for the tap0 and NAT configuration:
sudo tunctl -b -u christian sudo ifconfig tap0 10.0.2.1 up sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo /sbin/iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE sudo /sbin/iptables -A FORWARD -i enp0s3 -o tap0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo /sbin/iptables -A FORWARD -i tap0 -o enp0s3 -j ACCEPT
Christian
On 17.05.24 11:00, hamed_khandagh--- via users wrote:
Hello Christian,
The build of Falkon with the Nova kernel on a PC board has been completed.
I apologize for any confusion caused by my previous email, which was sent in haste because I have recently started working with the Genode framework and need to become more fully acquainted with its build system.
By adding certain components to the source code, I have been able to run Falkon for the Nova kernel on a PC board. The e1000 network is also correctly recognized and receives the network address via DHCP correctly. However, I still do not have network access from within QEMU to the outside and vice versa.
Thank you for your understanding.
Best regards, Hamed _______________________________________________ users mailing list -- users@lists.genode.org To unsubscribe send an email to users-leave@lists.genode.org Archived at https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/mes...
Hi Christian,
Thank you.
I rebuilt the project and successfully achieved results with both the Linux kernel and board, as well as the Nova kernel and PC board, and I also managed to connect to the network. I am grateful for your guidance and the time you spent.
Best regards, Hamed