genodelabs / genode-world

Collection of community-maintained components for Genode
Other
44 stars 46 forks source link

update openssl to v3 #342

Open trimpim opened 9 months ago

trimpim commented 9 months ago

This is needed to complete https://github.com/genodelabs/genode/issues/4992

trimpim commented 9 months ago

This is still in testing.

The following test succeed on x86_64:

The following run scripts fail as they still reference /repos/base/run/platform_drv.inc which no longer exists:

run/scrcpy fails during run time with (also when I checkout 23.08 on both genode and genode-world):

[init -> scrcpy] Error: LD: exception during program load: 'Genode::Region_map::Region_conflict'

The following run scripts fail when building components:

Next I investigate solutions for the known issues and run the tests on arm_v8a and x86_32 (qemu).

trimpim commented 9 months ago

@chelmuth except for run/pkcs11_tool I can now successful execute all run scripts.

In run/pkcs11_tool as soon as I enable the pkcs11-tool start node the messages message below is printed.

I'm guessing, that this might be related to the changes mentioned in https://genode.org/documentation/release-notes/23.05#USB.

As the pkcs11-tool isn't in the repository (yet) maybe @m-stein could guide me on how I can build a new version? I see there are the branches pkcs11_tool and sculpt_pkcs11_tool in his repository. Could I pick some commits from these to build the tool?

[init] child "drivers" requests resources: ram_quota=1067418
[init] child "drivers" requests resources: ram_quota=1067418
[init -> drivers] Warning: unable to transfer session quota (1068237 bytes, 5 caps) of forwarded Usb session
[init] Warning: pkcs11-tool: could not revert session RAM quota (service=Usb cid=22 args='tx_buf_size=1048576, cap_quota=5, label="pkcs11-tool -> usb_device",o
[init] ta=5)
[init -> pkcs11-tool] Error: Usb-session creation failed (label="usb_device", ram_quota=1044K, cap_quota=5, tx_buf_size=1048576)
[init -> pkcs11-tool] Error: Uncaught exception of type 'Genode::Service_denied'
[init -> pkcs11-tool] Warning: abort called - thread: ep
m-stein commented 8 months ago

@trimpim Have you tried following the instructions in https://genodians.org/m-stein/2022-08-18-pkcs11-tool-1 ? It should give you the newest version ported so far.

trimpim commented 8 months ago

@m-stein I had forgotten about this genodians article but in the meantime I did give it a try.

I had to update form 0.22.0-rc2 to 0.24.0-rc1 as the former version failed to build on my arch based Linux distribution.

With the updated version I'm able to build pkcs11_tool but I get the warning below about thirty times.

/usr/local/genode/tool/21.05/bin/../lib/gcc/x86_64-pc-elf/10.3.0/../../../../x86_64-pc-elf/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000001000000

I guess this is the cause of the execution error I get when executing the updated pcks-tool:

[init -> pkcs11-tool]   0x400000 .. 0x103fffff: linker area
[init -> pkcs11-tool] Error: LD: exception during program load: 'Genode::Region_map::Region_conflict'
[init -> pkcs11-tool] Error: Uncaught exception of type 'Genode::Region_map::Region_conflict'
[init -> pkcs11-tool] Warning: abort called - thread: ep

I'm currently investigating the cause of this.

m-stein commented 8 months ago

AFAIK, the _start symbol should be part of the crt0 in the startup lib that is part of the base- lib and therefor of the ld- lib that is linked dynamically behind the ld api. In which context do you see the warnings?

trimpim commented 8 months ago

@m-stein the warning was printed when a program was linked. I figured out how to fix this warning about two hours ago. The culprit was that automake ignored LDLIBS.

I have pushed my current state to https://github.com/trimpim/goa_projects/tree/pkcs11_tool-for_openssl3 (it is not cleaned up currently).

The Genode::Region_map::Region_conflict exception still persists when I test the run script. The exception is thrown in repos/base/src/core/region_map_component.cc because of

if (attr.offset < 0 || align_addr(attr.offset, get page_size_log2()) != attr.offset)
m-stein commented 8 months ago

@trimpim Glad to hear that you could fix the LD exception! I have no direct clue what the region conflict could be caused by. I'd backtrace it into the application code.

trimpim commented 8 months ago

@m-stein I intend to look in to this when sculp 23.10 is released. I will then rebase all branches to this release and see if the exception still gets triggered.

I'm currently guessing, that this is might be caused by mismatching versions of packages between Goa and the other repositories.

m-stein commented 8 months ago

I've updated my packages to current stagings Sculpt and am getting the same region conflict so far.

trimpim commented 6 months ago

@m-stein I just had the same error, when I was switching a libc application to a native and forgot to replace

void Libc::Component::construct(Libc::Env &env)

with

void Component::construct(Genode::Env &env)

I'm not sure if the problem with the pcsc-tool is the same, I just remembered this when I did see the error.