Hello Sven,

>> Could you please make core at least a little more verbose at this point?

coming back to the exception topic, here is a simple solution, which
reports occurred exceptions as a log message. The patch hasn't made it
into the last release but if it works for you, I'll commit it to the SVN.

Norman
Index: base-okl4/src/core/platform_thread.cc
===================================================================
--- base-okl4/src/core/platform_thread.cc	(revision 127)
+++ base-okl4/src/core/platform_thread.cc	(working copy)
@@ -56,7 +56,7 @@
 	L4_SpaceId_t  space_id           = L4_SpaceId(space_no);
 	L4_ThreadId_t scheduler          = L4_rootserver;
 	L4_ThreadId_t pager              = _pager ? _pager->cap().tid() : L4_nilthread;
-	L4_ThreadId_t exception_handler  = L4_rootserver;
+	L4_ThreadId_t exception_handler  = pager;
 	L4_Word_t     resources          = 0;
 	L4_Word_t     utcb_size_per_task = L4_GetUtcbSize()*(1 << Platform_pd::THREAD_BITS);
 	L4_Word_t     utcb_location      = platform_specific()->utcb_base()
Index: base-okl4/src/base/ipc/pager.cc
===================================================================
--- base-okl4/src/base/ipc/pager.cc	(revision 127)
+++ base-okl4/src/base/ipc/pager.cc	(working copy)
@@ -82,8 +82,30 @@
 
 void Ipc_pager::wait_for_page_fault()
 {
-	/* wait for page fault */
-	L4_MsgTag_t faulter_tag = L4_Wait(&_last);
+	L4_MsgTag_t faulter_tag;
+
+	for (;;) {
+
+		/* wait for page fault */
+		faulter_tag = L4_Wait(&_last);
+
+		/*
+		 * A page-fault message has one of the op bits (lower 3 bits of the
+		 * label) set. If those bits are zero, we got an exception message.
+		 */
+		bool is_exception = (L4_Label(faulter_tag) & 0xf) == 0;
+
+		if (!is_exception) break;
+
+		/*
+		 * Print diagnostic message and wait again.
+		 */
+		addr_t ip = 0;
+		L4_StoreMR(1, &ip);
+		PERR("Exception (label 0x%x) occured in space %d at IP 0x%p",
+		      (int)L4_Label(faulter_tag), (int)L4_SenderSpace().raw, (void *)ip);
+	}
+
 	_last_space = L4_SenderSpace();
 
 	/* read fault information */
------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to