Skip to content

Remove Fedora 40, add 42, and add Debian 13#3663

Merged
stevenengler merged 7 commits intoshadow:mainfrom
stevenengler:fedora
Oct 1, 2025
Merged

Remove Fedora 40, add 42, and add Debian 13#3663
stevenengler merged 7 commits intoshadow:mainfrom
stevenengler:fedora

Conversation

@stevenengler
Copy link
Copy Markdown
Contributor

@stevenengler stevenengler commented Sep 22, 2025

This updates our supported versions of Fedora and Debian.

This also makes a few small changes for things that were needed for Debian 10, which was dropped a while ago. There's also a comment about using posix_spawn_file_actions_addchdir_np when we don't need to support Debian 10, but I didn't try to change this.

I also updated the tor version (was just a minor version bump), and disabled the clone_leader_exits_early-linux test which segfaults on newer distros (#3544).

@stevenengler stevenengler self-assigned this Sep 22, 2025
@github-actions github-actions bot added Component: Testing Unit and integration tests and frameworks Component: Build Build/install tools and dependencies Component: Documentation In-repository documentation, under docs/ labels Sep 22, 2025
@stevenengler stevenengler force-pushed the fedora branch 2 times, most recently from 69af74c to d95f9eb Compare September 22, 2025 03:57
@stevenengler
Copy link
Copy Markdown
Contributor Author

stevenengler commented Sep 22, 2025

On Debian 13 we get:

FAIL: test_bash_script_sleep (tests.test_shadow_exec.TestShadowExecCLI.test_bash_script_sleep)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/__w/shadow/shadow/shadowtools/tests/test_shadow_exec.py", line 65, in test_bash_script_sleep
    self.assertEqual(
    ~~~~~~~~~~~~~~~~^
        res,
        ^^^^
        "2000-01-01T00:00:00,000000000+00:00\n2000-01-01T00:00:01,001000000+00:00\n",
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
AssertionError: '2000-01-01T00:00:00,000000000+00:00\n2000-01-01T00:00:01,001000001+00:00\n' != '2000-01-01T00:00:00,000000000+00:00\n2000-01-01T00:00:01,001000000+00:00\n'
  2000-01-01T00:00:00,000000000+00:00
- 2000-01-01T00:00:01,001000001+00:00
?                             ^
+ 2000-01-01T00:00:01,001000000+00:00
?                             ^

It looks like it advances 1 ns extra on Debian 13. We disable model_unblocked_syscall_latency, so not sure what might be causing this. Maybe the bash version in Debian 13 does something slightly different that takes a 1 ns delay, or maybe there's some floating point conversion difference with "1.001".

@sporksmith
Copy link
Copy Markdown
Contributor

It looks like it advances 1 ns extra on Debian 13.

Weird. Maybe change the test to get the time back in an easier to parse format (e.g. unix epoch time: date +%s.%N)?. That might make the problem go away already if it's a formatting issue. If not then we could parse what we get back and add some tolerance. Not ideal, but probably not worth chasing down a 1ns conversion discrepancy somewhere in the chain here. (LMK if you'd rather I take a stab at this)

@stevenengler
Copy link
Copy Markdown
Contributor Author

stevenengler commented Sep 27, 2025

Fedora 42:

$ strace sleep 1.001 
[...]
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=1000000}, 0x7ffcb3f95a90) = 0
$ strace sleep 1
[...]
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7ffcb9cd0df0) = 0
$ sleep --version
sleep (GNU coreutils) 9.6

Debian 13:

$ strace sleep 1.001 
[...]
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=1000001}, 0x7ffc4e3a4840) = 0
$ strace sleep 1
[...]
clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=1}, 0x7fff6e4d85d0) = 0
$ sleep --version
sleep (GNU coreutils) 9.7
Packaged by Debian (9.7-3)

😞

This is probably due to coreutils/coreutils@cb7c210, which is the only change recent enough to seem like it would have this effect.

We can instead use coproc read -t 1.001; wait instead of sleep 1.001 to get a more reliable sleep.

This uses a `setitimer` rather than `clock_nanosleep`.
@stevenengler
Copy link
Copy Markdown
Contributor Author

@robgjansen If/once this is approved, you'll need to update the CI checks to add:

  • tor (tor-0.4.8.18)
  • shadow (fedora:42, gcc, release)
  • shadow (debian:13-slim, gcc, release)

and remove:

  • tor (tor-0.4.8.13)
  • shadow (fedora:40, gcc, release)

@sporksmith
Copy link
Copy Markdown
Contributor

This is probably due to coreutils/coreutils@cb7c210, which is the only change recent enough to seem like it would have this effect.

Nice find!

@robgjansen
Copy link
Copy Markdown
Member

@stevenengler I have updated the CI checks as requested.

@stevenengler stevenengler enabled auto-merge October 1, 2025 04:16
@stevenengler stevenengler merged commit 3534a26 into shadow:main Oct 1, 2025
25 checks passed
@stevenengler stevenengler deleted the fedora branch October 1, 2025 04:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Component: Build Build/install tools and dependencies Component: Documentation In-repository documentation, under docs/ Component: Testing Unit and integration tests and frameworks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants