Skip to content

Conversation

@kempniu
Copy link
Contributor

@kempniu kempniu commented Nov 14, 2025

Recording seems to be broken on Fedora 43:

[FATAL src/record_syscall.cc:6754:rec_process_syscall_arch()] 
 (task 35371 (rec:35371) at time 11696)
 -> Assertion `t->regs().syscall_result_signed() == -syscall_state.expect_errno' failed to hold. Expected EINVAL for 'ioctl' but got result 0 (errno SUCCESS); Unknown ioctl(0x402c542c): type:0x54 nr:0x2c dir:0x1 size:44 addr:0x7ffcf79be4c0

I haven't tried pinpointing which component triggers this specifically, but 0x402c542c is TCSETSW2.

man TCSETSW2 says:

TCSETS Equivalent to tcsetattr(fd, TCSANOW, argp).

       Set the current serial port settings.

TCSETSW
       Equivalent to tcsetattr(fd, TCSADRAIN, argp).

       Allow the output buffer to drain, and set the current serial port settings.

TCSETSF
       Equivalent to tcsetattr(fd, TCSAFLUSH, argp).

       Allow the output buffer to drain, discard pending input, and set the current serial port settings.

The  following  four ioctls are just like TCGETS, TCSETS, TCSETSW, TCSETSF, except that they take a struct termios2 * instead of a struct termios *. (...)

       TCGETS2
       TCSETS2
       TCSETSW2
       TCSETSF2

Given that TCSETS2 is already supported by rr, listing TCSETSW2 and TCSETSF2 next to it seems to do the trick.

@khuey khuey merged commit 028e59b into rr-debugger:master Nov 14, 2025
5 checks passed
@khuey
Copy link
Collaborator

khuey commented Nov 14, 2025

Thanks!

@kempniu kempniu deleted the support-tcsetsw2-and-tcsetsf2 branch November 14, 2025 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants