RTEMS | i38p/pc BSP ATA driver asserts with node errors on FAT disk mount (#5253)
Chris Johns (@chris)
gitlab at rtems.org
Wed May 28 02:33:56 UTC 2025
Chris Johns created an issue: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5253
## Summary
With `RTEMS_DEBUG` enabled the PC ATA driver asserts with a failure because a node's link pointer is not set to `NULL`. The assert is:
```
assertion "_Chain_Is_node_off_chain( the_node )" failed: file "../../../cpukit/include/rtems/score/chainimpl.h", line 691, function: _Chain_Append_unprotected
```
A back trace is:
```
(gdb) bt
#0 0x00162c55 in bsp_reset (source=source at entry=RTEMS_FATAL_SOURCE_ASSERT, code=code at entry=1872624) at ../../../bsps/i386/pc386/start/bspreset.c:39
#1 0x00161b15 in bsp_fatal_extension (source=RTEMS_FATAL_SOURCE_ASSERT, always_set_to_false=false, code=1872624) at ../../../bsps/shared/start/bspfatal-default.c:213
#2 0x001189b3 in _User_extensions_Iterate (arg=arg at entry=0x1c92b8, visitor=0x118900 <_User_extensions_Fatal_visitor>, direction=CHAIN_ITERATOR_FORWARD) at ../../../cpukit/score/src/userextiterate.c:194
#3 0x0011321f in _User_extensions_Fatal (error=1872624, source=RTEMS_FATAL_SOURCE_ASSERT) at ../../../cpukit/include/rtems/score/userextimpl.h:467
#4 _Terminate (the_source=the_source at entry=RTEMS_FATAL_SOURCE_ASSERT, the_error=the_error at entry=1872624) at ../../../cpukit/score/src/interr.c:66
#5 0x001077ec in rtems_fatal (fatal_code=1872624, fatal_source=RTEMS_FATAL_SOURCE_ASSERT) at ../../../cpukit/include/rtems/fatal.h:160
#6 __assert_func (file=file at entry=0x189a64 "../../../cpukit/include/rtems/score/chainimpl.h", line=691, func=0x1a0378 <__func__.0> "_Chain_Append_unprotected", failedexpr=0x189a3c "_Chain_Is_node_off_chain( the_node )") at ../../../cpukit/libcsupport/src/__assert.c:71
#7 0x0016c03d in _Chain_Append_unprotected (the_node=0x1cbbc0, the_chain=0x1aae4c <ata_ide_ctrls+44>) at ../../../cpukit/include/rtems/score/chainimpl.h:691
#8 0x0016c0dc in _Chain_Append_unprotected (the_node=0x1cbbc0, the_chain=0x1aae4c <ata_ide_ctrls+44>) at ../../../cpukit/sapi/src/chainprotected.c:99
#9 rtems_chain_append (chain=chain at entry=0x1aae4c <ata_ide_ctrls+44>, node=0x1cbbc0) at ../../../cpukit/sapi/src/chainprotected.c:97
#10 0x00160cb9 in ata_add_to_controller_queue (ctrl_minor=0, areq=0x1cbbc0) at ../../../bsps/shared/dev/ide/ata.c:540
#11 0x00160ea1 in ata_io_data_request (ata_dev=<optimized out>, req=0x1c9450) at ../../../bsps/shared/dev/ide/ata.c:228
#12 ata_ioctl (dd=0x1bee44, cmd=3222815233, argp=0x1c9450) at ../../../bsps/shared/dev/ide/ata.c:949
#13 0x00102f5e in rtems_bdbuf_execute_transfer_request (dd=dd at entry=0x1bee44, req=req at entry=0x1c9450, cache_locked=cache_locked at entry=true) at ../../../cpukit/libblock/src/bdbuf.c:1878
#14 0x001032c9 in rtems_bdbuf_execute_read_request (dd=dd at entry=0x1bee44, bd=<optimized out>, bd at entry=0x1bbe2c, transfer_count=transfer_count at entry=1) at ../../../cpukit/libblock/src/bdbuf.c:1994
#15 0x001044df in rtems_bdbuf_read (dd=dd at entry=0x1bee44, block=block at entry=0, bd_ptr=bd_ptr at entry=0x1c9558) at ../../../cpukit/libblock/src/bdbuf.c:2094
#16 0x00131f67 in rtems_bdpart_read_record (dd=0x1bee44, index=0, block=0x1c9558) at ../../../cpukit/libblock/src/bdpart-read.c:220
#17 0x00132190 in rtems_bdpart_read (disk_name=disk_name at entry=0x1ca62e "/dev/hda", format=format at entry=0x1c95dc, pt=pt at entry=0x1c9630, count=count at entry=0x1c95d4) at ../../../cpukit/libblock/src/bdpart-read.c:273
#18 0x00119a5e in rtems_bdpart_shell_main (argc=2, argv=0x1c9b30) at ../../../cpukit/libmisc/shell/fdisk.c:236
#19 0x0012dacd in shell_main_loop (shell_env=shell_env at entry=0x1c9ec8, interactive=interactive at entry=true, line_editor_output=<optimized out>) at ../../../cpukit/libmisc/shell/shell.c:1215
#20 0x0012ed18 in rtems_shell_main_loop (shell_env=shell_env at entry=0x1c9ec8) at ../../../cpukit/libmisc/shell/shell.c:1383
#21 0x0012ed38 in rtems_shell_task (task_argument=1875656) at ../../../cpukit/libmisc/shell/shell.c:1038
#22 0x00115adb in _Thread_Handler () at ../../../cpukit/score/src/threadhandler.c:164
#23 0xa5a5a5a5 in ?? ()
```
## Steps to reproduce
INI file:
```
[DEFAULT]
RTEMS_DEBUG = True
RTEMS_POSIX_API = True
[i386/pc686]
BUILD_TESTS = True
```
Run the `fileio.exe` test, enter the shell and then enter the following command:
```
fdisk /dev/hda
```
The shell session is:
```
*** BEGIN OF TEST FILE I/O ***
*** TEST VERSION: 7.0.0.34c362fee100659e36a6945204f77e71cb1c2f7e
*** TEST STATE: USER_INPUT
*** TEST BUILD: RTEMS_DEBUG RTEMS_POSIX_API
*** TEST TOOLS: 13.3.0 20240521 (RTEMS 7, RSB 170160cb918e7c68b4b35d8f0a42db6df81168e7, Newlib 1b3dcfd)
Press any key to start file I/O sample (20s remaining)
=========================
RTEMS FILE I/O Test Menu
=========================
p -> part_table_initialize
f -> mount all disks in fs_table
l -> list file
r -> read file
w -> write file
s -> start shell
Enter your selection ==>s
Creating /etc/passwd and group with four useable accounts:
root/pwd
test/pwd
rtems/NO PASSWORD
chroot/NO PASSWORD
Only the root user has access to all available commands.
=========================
starting shell
=========================
Welcome to rtems-7.0.0 (Intel i386/Pentium/pc686)
Copyright (C) 1989, 2021 RTEMS Project and contributors
Login into RTEMS
/dev/foobar login: root
Password:
RTEMS Shell on /dev/foobar. Use 'help' to list commands.
SHLL [/] # fdisk /dev/hda
assertion "_Chain_Is_node_off_chain( the_node )" failed: file "../../../cpukit/include/rtems/score/chainimpl.h", line 691, function: _Chain_Append_unprotected
```
### Pre-set options
--
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5253
You're receiving this email because of your account on gitlab.rtems.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/bugs/attachments/20250528/7cd3a53e/attachment.htm>
More information about the bugs
mailing list