RTEMS 6.1 assertion fail in _Chain_Append_unprotected in ATA driver

Chris Johns chrisj at rtems.org
Mon May 26 01:24:03 UTC 2025


On 20/5/2025 9:11 pm, Jens Gollasch wrote:
> Hi all,
> 
> i have a project (i386/pc686)  running for some years fine in RTEMS 5.1, now
> changed to 6.1.
> Without any changes in my project I get now an assertion fail in the ATA driver.
> This is the call in my init task:
> 
>     ...
>     sc = rtems_bdbuf_init();
>     assert(sc == RTEMS_SUCCESSFUL);
>     ...
>     if ((sc = rtems_bdpart_register_from_disk(CF_DISK)) == RTEMS_SUCCESSFUL)
>         ...
> 
> 
> I traced the problem down thru
>  rtems_bdpart_read( disk_name, &format, pt, &count);
>  rtems_bdbuf_read( dd, index, block);
>   rtems_bdbuf_execute_transfer_request (dd, req, true);
> 
> to the ata_ioctl
>  ata_add_to_controller_queue(ctrl_minor, areq);
> and end up in
>  ata.c, ata_add_to_controller_queue(), line 540,  in an call to
>     rtems_chain_append(&ata_ide_ctrls[ctrl_minor].reqs, &areq->link);
> 
> chainprotected.c, 97:  _Chain_Append_unprotected( chain, node );
> and in
> chainimpl.h, 688:     _Assert( _Chain_Is_node_off_chain( the_node ) );
> give an assertion fail.
> 
> --------
> assertion "_Chain_Is_node_off_chain( the_node )" failed: file "../../../cpukit/
> include/rtems/score/chainimpl.h", line 69
> 1, function: _Chain_Append_unprotected

I have seen this recently when getting a build for the FatFS GSoC project. I
disabled `RTEMS_DEBUG` to move on. It would be appreciated if you could raise an
issue in https://gitlab.rtems.org/?

Thanks
Chris


> 
> *** FATAL ***
> fatal source: 7 (RTEMS_FATAL_SOURCE_ASSERT)
> fatal code: 7049152 (0x006b8fc0)
> RTEMS version: 6.1.0.not-released
> RTEMS tools: 13.3.0 20240521 (RTEMS 6, RSB no-repo, Newlib 1b3dcfd)
> executing thread ID: 0x0a010004
> executing thread name: UI1
> 
> FATAL ERROR - Executive shutdown! Any key to reboot...
> --------
> 
> I'm not an insider in this chain implementation.
> It seems that the chain for ata_ide_ctrls[] is not correct?
> The disk_driver data seems all to be good, because it is the same physical
> device and with RTEMS 5.1 the ATA/IDE device works very well.
> Are there any new changes what I have to do in RTEMS 6.1 before I call
> rtems_bdpart_register_from_disk?
> 
> 



More information about the users mailing list