Hi Denis, On 08/30/2016 04:21 PM, Denis Huber wrote: > 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 >
You are mixing some things up here, I pushed a working version of your code (tested on Fisco.OC in Qemu) to GitHub: https://github.com/ssumpf/genode/commit/0075a0026faa8079f03dfb4d43ec281ef51f1083 I hope this clarifies things a little. The relevant output should look like this: > [init -> pf-signal_handler] --- pf-signal_handler started --- > no RM attachment (WRITE pf_addr=1000 pf_ip=10001d9 from 2d2000) > Warning: could not resolve pf=0x1000 ip=0x10001d9 > [init -> pf-signal_handler] Region map state is WRITE_FAULT pf_addr=0x1000 > [init -> pf-signal_handler] Allocating dataspace and attaching it to the > region map > [init -> pf-signal_handler] --- pf-signal_handler ended --- Sebastian P.S. As I see it, you needed the 'join' because the thread was created on the stack again ;) One has to use the heap or bss/data. > 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@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 >> > > ------------------------------------------------------------------------------ > _______________________________________________ > 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