Genode 16.05 Fault handler

Denis Huber huber.denis at ...435...
Tue Aug 30 16:21:10 CEST 2016


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/c58b4144bff720f837112c590ebd2148e9c3f199/src/test/fault_handler/main.cc


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/93eaec436ce9b6d3b3a6663558bff9af925ae70f/src/test/fault_handler/main.cc#L19
>>
>> I am using run script [2], if it helps.
>>
>> [2]
>> https://github.com/702nADOS/genode-CheckpointRestore-SharedMemory/blob/93eaec436ce9b6d3b3a6663558bff9af925ae70f/run/fault_handler.run
>>
>>
>> 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/c9a5a1f999a2ce1c6ffd5c316eee127c93d87308/src/test/fault_handler/main.cc
>>>>
>>>> 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::Capability<Genode::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 at lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> _______________________________________________
>>> genode-main mailing list
>>> genode-main at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>>
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> genode-main mailing list
>> genode-main at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> genode-main mailing list
> genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
>




More information about the users mailing list