Debug RTEMS RTL using qemu-system-arm

Peng Fan van.freenix at gmail.com
Sun Jul 6 13:21:27 UTC 2014


I use qemu and gdb to debug,  The following is the backtrace. and I found
that _POSIX_Keys_Allocate() returns NULL/0, is this correct? Any tips? I do
not know how to debug this, or there should be some shell configuration
when call rtems_shell_init?

Breakpoint 1, pthread_key_create (key=0x20b2c8,
    destructor=0x157d55 <rtems_shell_env_free>)
    at
../../../../../../rtems-new/c/src/../../cpukit/posix/src/keycreate.c:41
41  the_key = _POSIX_Keys_Allocate();
(gdb) bt
#0  *pthread_key_create* (key=0x20b2c8,
    destructor=0x157d55 <rtems_shell_env_free>)
    at
../../../../../../rtems-new/c/src/../../cpukit/posix/src/keycreate.c:41
#1  0x00157db8 in *rtems_shell_current_env_make_key *()
    at
../../../../../../rtems-new/c/src/../../cpukit/libmisc/shell/shell.c:109
#2  0x0013f2fa in _Once (once_state=0x2071d8
<rtems_shell_current_env_once+4>,
    init_routine=0x157da1 <rtems_shell_current_env_make_key>)
    at ../../../../../../rtems-new/c/src/../../cpukit/score/src/once.c:42
#3  0x00136aca in pthread_once (
    once_control=0x2071d4 <rtems_shell_current_env_once>,
    init_routine=0x157da1 <rtems_shell_current_env_make_key>)
    at
../../../../../../rtems-new/c/src/../../cpukit/posix/src/pthreadonce.c:39
#4  0x00158f96 in rtems_shell_main_loop (shell_env_arg=0x5a4118)
    at
../../../../../../rtems-new/c/src/../../cpukit/libmisc/shell/shell.c:707
#5  0x00158f2e in rtems_shell_task (task_argument=5914904)
    at
../../../../../../rtems-new/c/src/../../cpukit/libmisc/shell/shell.c:671
#6  0x0014207c in _Thread_Handler ()
    at
../../../../../../rtems-new/c/src/../../cpukit/score/src/threadhandler.c:192
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
*(gdb) n*
*43  if ( !the_key ) {*
*(gdb) p the_key*
*$1 = (POSIX_Keys_Control *) 0x0*

Regards,
Peng.

2014-07-05 15:44 GMT+08:00 Peng Fan <van.freenix at gmail.com>:

> Hi,
>
> I encountered a problem when using qemu-system-arm to simulate RTEMS RTL
> using `qemu-system-arm -no-reboot -net none -nographic -M realview-pbx-a9
> -m 256M -kernel build/arm-rtems4.11-realview_pbx_a9_qemu/rtld`
>
> it continuly outputs the following msg, but not run into a shell prompt:
> "
> pthread_setspecific(shell_current_env_key)
> Starting shell....
>
> pthread_setspecific(shell_current_env_key)
> Starting shell....
>
> pthread_setspecific(shell_current_env_key)
> Starting shell....
>
> pthread_setspecific(shell_current_env_key)
> Starting shell....
> "
> I found that  `sc = rtems_shell_init ("fstst", 60 * 1024, 150,
> "/dev/console", 0, 1, NULL);`  returns immediately with the return value
> RTEMS_SUCCESSFULL.
>
> If I `git reset --hard *ffc862cbf567*` to the following RTEMS commit,
> "commit *ffc862cbf567*068d1cc2b8417bafdf808dfcc67a
> Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
> Date:   Tue Sep 17 13:08:49 2013 +0200
>
>     bsp/realview-pbx-a9: Add NULL pointer protection
>
>     Qemu Git version 8641136c54d216edb5bb8ef723c754039b4ce5cf3 or later is
>     required."
> RTL runs well. I am not familiar with RTEMS internal, not sure why this.
> The qemu verison is 2.0.0. RTEMS is 4.11.
>
> Regards,
> Peng.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20140706/48626ec1/attachment.html>


More information about the users mailing list