psxtests/psxkey08 failure
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Mar 11 12:24:59 UTC 2014
Ok, I had a closer look at the test since it failed now on another simulator.
This test is broken:
[...]
puts( "Init - pthread Key create - OK" );
sc = pthread_key_create( &Key, NULL );
rtems_test_assert( !sc );
for ( ; ; ) {
task_id_p = malloc( sizeof( rtems_id ) );
rtems_test_assert( task_id_p );
sc = rtems_task_create(
rtems_build_name('T','A',created_task_count, ' '),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
task_id_p
);
rtems_test_assert(
(sc == RTEMS_UNSATISFIED) ||
(sc == RTEMS_TOO_MANY) ||
(sc == RTEMS_SUCCESSFUL)
);
/**
* when return is RTEMS_TOO_MANY or RTEMS_UNSATISFIED, there is not
* enough source to create task.
*/
if ( (sc == RTEMS_TOO_MANY) || (sc == RTEMS_UNSATISFIED) ) {
break;
}
++created_task_count;
sc = rtems_task_start( *task_id_p, test_task, 0 );
rtems_test_assert( sc == RTEMS_SUCCESSFUL );
sc = rtems_semaphore_obtain( sema1, RTEMS_WAIT, 0 );
rtems_test_assert( sc == RTEMS_SUCCESSFUL );
}
[...]
We have a unified work area. So depending on the memory layout the
task_id_p = malloc( sizeof( rtems_id ) );
rtems_test_assert( task_id_p );
or the
sc = rtems_task_create(
rtems_build_name('T','A',created_task_count, ' '),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
task_id_p
);
rtems_test_assert(
(sc == RTEMS_UNSATISFIED) ||
(sc == RTEMS_TOO_MANY) ||
(sc == RTEMS_SUCCESSFUL)
);
may fail. If we are unlucky then we hit the first case and the test fails.
Why do we malloc the task_id_p? Its a memory leak and it is used only locally?
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list