Hi Bob,
On 01.07.2015 21:42, Bob Stewart wrote:
Once the Core_thread singleton is
created the last printf output that appears is one I inserted after the
call to to _become_active() in the constructor. A printf inserted into
the singleton method after the Core_thread creation never shows up on
the console. The initialization never completes.
This might be caused by a stack corruption. I would check whether the
stack pointer (insert [1] after _become_active()) is inside the
kernel_stack array (constraints via [2]). If the AM437x's hardware
CPU-ID of your CPU is not 0, this might be a problem as this value is
used to index CPU local data like the kernel stack. Another problem
might be the CXA guard stuff that Stefan mentioned. Additional to
Stefans suggestions you can try to prevent CXA guards by replacing [3]
with [4]. This way, you can easily validate the assumption before
digging deeper into it.
Cheers,
Martin
[1]
int i = 0; PINF("SP %p", &i);
[2]
/usr/local/genode-gcc/bin/genode-arm-nm bin/core | grep "kernel_stack$"
grep -r "KERNEL_STACK_SIZE =" base-hw/
[3]
Thread & Core_thread::singleton() {
static Core_thread ct;
return ct; }
[4]
#include <unmanaged_singleton.h>
Thread & Core_thread::singleton() {
return *unmanaged_singleton<Core_thread>(); }
------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main