-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 17.09.2014 15:29, Valentin Hauner wrote:
Hi,
was the alignment correct?
I don't know as you didn't tell us about the return value you got from malloc/memalign.
On 09/17/2014 02:53 PM, Björn Döbel wrote:
- What is thread_stacks[thread.id]?
It's the stack of that thread organized in an array, as suggested by Adam. The stack is prefilled with data:
thread_stacks[count][THREAD_STACK_SIZE - 1] = (l4_umword_t)thread->arg; thread_stacks[count][THREAD_STACK_SIZE
- 2] = 0;
where 'thread->arg' is some argument to pass to the thread.
I was enquiring about the actual value. :)
- What is the stack pointer you are setting at thread startup?
Again suggested by Adam, I'm setting thread_stacks[count][1998] as SP:
l4_thread_ex_regs(thread->cap, (l4_umword_t)thread->func,
(l4_umword_t)&thread_stacks[count][THREAD_STACK_SIZE - 2], 0);
Yes, but what IS this value, numerically?
- Is any of these addresses related to the page fault address you
are seeing?
OK, I've found out something new. In the trace buffer, I'm getting the following entry:
pf: 0026 pfa=0000b014 ip=01000200 (w-) spc=0xfcffae94 err=6
The IP points to the head of the thread function, the pfa is &thread_stacks[count][THREAD_STACK_SIZE - 3]. But why?
Maybe because your program is trying to push data onto the stack? I have no idea because you did not tell us about the actual instruction at address 0x1000200.
Bjoern