[Bug 1746] New: _Workspace_Free() interface change crashing startup

bugzilla-daemon at rtems.org bugzilla-daemon at rtems.org
Mon Feb 28 23:59:34 UTC 2011


https://www.rtems.org/bugzilla/show_bug.cgi?id=1746

           Summary: _Workspace_Free() interface change crashing startup
           Product: RTEMS
           Version: HEAD
          Platform: All
        OS/Version: RTEMS
            Status: NEW
          Severity: critical
          Priority: P3
         Component: cpukit
        AssignedTo: joel.sherrill at oarcorp.com
        ReportedBy: dufault at hda.com


The _Workspace_Free() documentation says:
"If block is equal to NULL, then the request is ignored. This allows the caller
to not worry about whether or not a pointer is NULL"
and there are places in the code that assume that.

Here's a stack trace and discussion for a crash during
_API_Mutex_Initialization():

#0  _Objects_Extend_information (information=0x210373a8)
   at
../../../../../../rtems-head/c/src/../../cpukit/score/src/objectextendinformation.c:209
#1  0x00081cf0 in _Objects_Initialize_information (information=0x210373a8, 
   the_api=OBJECTS_INTERNAL_API, the_class=0x2, maximum=0x1, size=0x74, 
   is_string=0x0, maximum_name_length=0x0)
   at
../../../../../../rtems-head/c/src/../../cpukit/score/src/objectinitializeinformation.c:156
#2  0x0007cbd8 in _API_Mutex_Initialization (maximum_mutexes=0x1)
   at ../../../../../../rtems-head/c/src/../../cpukit/score/src/apimutex.c:23
#3  0x0007b76c in rtems_initialize_data_structures ()
   at ../../../../../../rtems-head/c/src/../../cpukit/sapi/src/exinit.c:125
#4  0x00026724 in boot_card (cmdline=0x0)
   at
../../../../../../../../rtems-head/c/src/lib/libbsp/powerpc/mpc55xxevb/../../shared/bootcard.c:163
#5  0x00000134 in start ()
   at
../../../../../../../../rtems-head/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start.S:219
(gdb) 
-- "information" is a pointer to _API_Mutex_Information,
-- and its object_blocks member was set to 0 in
_Objects_Initialize_information()
(gdb) print _API_Mutex_Information.object_blocks
$4 = (void **) 0x0
(gdb) 
-- but _Objects_Extend_information() is saving that away:
209        old_tables = information->object_blocks;
(gdb) next
211        information->object_blocks = object_blocks;
(gdb) print old_tables
$5 = (void *) 0x0
(gdb) 
-- And if we continue a bit it's going to unconditionally call
_Workspace_Free()
Breakpoint 5, _Objects_Extend_information (information=0x210373a8)
   at
../../../../../../rtems-head/c/src/../../cpukit/score/src/objectextendinformation.c:224
224        _Workspace_Free( old_tables );
(gdb)

-- 
Configure bugmail: https://www.rtems.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the bugs mailing list