Hello Sebastian,
I created a new thread which causes the page fault, and also assigned an extra Entrypoint for the Signal_handler [1], but still no success. Perhaps I am using the Signal_handler in a wrong way.
[1] https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/c58b4...
Kinds regards, Denis
On 30.08.2016 15:45, Sebastian Sumpf wrote:
Hello again,
I missed that part
*((unsigned int*)0x1000) = 1;
in my last reply. You cannot cause a page fault in your entry point and also handle it in the entry point thread, because the entry point is not able to receive signals when it is in page fault. It is a hen and egg problem.
If you cause the fault from another Genode thread, it should work as expected.
Sebastian
On 08/30/2016 03:07 PM, Denis Huber wrote:
Hello Sebastian,
I moved sigh to the member attributes [1], but without success. I also tried to use a heap to store the Signal_handler, also without success.
[1] https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/93eae...
I am using run script [2], if it helps.
[2] https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/93eae...
Kind regards, Denis
On 30.08.2016 14:36, Sebastian Sumpf wrote:
Hi Denis,
Signal_handler<Main> sigh = {env.ep(), *this, &Main::_handle_fault};
The line above, creates the Signal_handler on the stack and destructs this handler as soon as the 'Main' constructor is finished.
Therefore, 'sigh' should be a member of the 'Main' class.
Regards,
Sebastian
On 08/30/2016 02:10 PM, Denis Huber wrote:
Dear Genode community,
in Genode 16.05 the old usage of Signal_receivers and Signal_contexts is considered deprecated. Instead Signal_handler and Signal_transmitter shall be used.
I am trying to use a Signal_handler as a fault handler for env's address space. I wrote a short test to illustrate the problem [1].
[1] https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/c9a5a...
The output of [1] is as follows: " [init -> pf-signal_handler] --- pf-signal_handler started --- no RM attachment (WRITE pf_addr=1000 pf_ip=100061c from 2ae000) Genode::Pager_entrypoint::entry()::<lambda(Genode::Pager_object*)>: Could not resolve pf=1000 ip=100061c "
The signal handler was registered correctly, because the line " Genode::Core_pd_session_component::submit(Genode::CapabilityGenode::Signal_context, unsigned int)::<lambda(Genode::Signal_context_component*)>: invalid signal-context capability " is missing. However, the method _handle_fault() is never entered. What am I doing wrong?
Kind regards, Denis
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main
genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main