Hi,
sorry for my late response!
On 04/15/2013 01:59 PM, longjks wrote:
hi, I am working to make Android4.0.4 boot on PandaBoard. However the l4android stop unexpected. I can see some page-fault error in the android_term, but I can not save it from android_term. !WARN: rild: Page-fault above task size: pfa=ffff00c0 pc=b7b02758 !0:ffff00b4 00000005 00000000 ffff00b4 4:b7b2e004 00000005 00000004 0000ab1c !8:b0012fa8 b7b31000 00050000 b7aec000 12:00000000 bf4d56d8 b0003a43 b7ba5758 !CPSR:40000130 Err:0041000f What does this error mean?
Well, that error is printed by the Linux kernel, and informs you about the pagefault of one of its user tasks. The rild process (radio interface layer daemon of Android) caused a pagefault. I recommend to first examine the corresponding binary (/system/bin/rild ?) what's going on at address 0xb7b02758.
last mail, Stefan said:
well, from the log I only can see, there is probably still a thread that exceeds its stack. You can enter the kernel-debugger yourself (pressing ESC in the serial terminal), and press "lp" to show the process list. One thread will wait for the pager of the system, thereby you can identify the component that raised the fault.
How to decide which thread is waiting for the pager of the system?
You've to distinct L4Linux processes here from native L4 processes. As I said, above error message comes from the Linux kernel. The para-virtualized L4Linux kernel uses a special feature of the Fiasco.OC kernel, namely the VCPU, to implement its own scheduling, and exception mechanisms. A virtual CPU, or short VCPU, is a special thread. When associated with Fiasco.OC IRQ objects, its execution can be interrupted. Moreover, it's possible to run one and the same VCPU in different address spaces (L4 tasks). Therefore, VCPUs enable implementation of CPU virtualization in L4Linux, more easily and effectively in contrast to the formerly used model, where all Linux processes where mapped to L4 threads. As a consequence, all Linux threads (including kernel threads) that run on top of the same CPU in Linux are seen as one and the same thread in the Fiasco.OC kernel debugger. Thereby the Fiasco.OC kernel debugger mostly isn't the right place to debug Linux userland problems.
Instead you should either try the Android Debug Bridge, or strace, gdb etc. from within your Android initramfs. If that all doesn't help, you might instrument the L4Linux kernel to find out what happens.
Do you have some help doc for debugging?
I'm afraid no we haven't. In fact we're just users of the Fiasco.OC kernel too. The actual development of the Fiasco.OC and L4Linux kernel isn't done by the Genode community, but by TU-Dresden and the l4-hackers community. Nevertheless, AFAIK there isn't such a document available.
By the way, You can see my log in attachment.
thanks.
Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter
Genode-main mailing list Genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main