Skip to content

main: --no-downgrade-check flag - #1114

Open
dozreg-toplud wants to merge 2 commits into
developfrom
dozreg/downgrade-flag
Open

dozreg-toplud wants to merge 2 commits into
developfrom
dozreg/downgrade-flag

Conversation

@dozreg-toplud

Copy link
Copy Markdown
Contributor

@mopfel-winrux had an issue where he could not migrate his ship to 64 bit Vere with the newer runtime since #1104 got merged.

This PR introduces a flag to skip the check and to set the checked memory region with zeros.

Before we proceed, @mopfel-winrux, could you specify the issue that you had? Was it specifically 32->64 bit migration? I want to make sure that the downgrade check does not indicate some other issue with the migration.

@dozreg-toplud

Copy link
Copy Markdown
Contributor Author

The reason I am asking is because a1340fb was supposed to address this

@matthew-levan

Copy link
Copy Markdown
Contributor

@mopfel-winrux provided me with the bug report and stack trace earlier today in a DM, so I am passing it along:

root@nativeplanet:/var/lib/docker/volumes/dacrex-sanneb/_data# /home/nativeplanet/git/vere/zig-out/x86_64-linux-musl/urbit --loom 33 dacrex-sanneb/
~
urbit 5.0-e162414 (32-bit)
boot: home is /var/lib/docker/volumes/dacrex-sanneb/_data/dacrex-sanneb
boot: core limit: Invalid argument
loom: mapped 16384MB
lite: arvo formula 4ce68411
lite: core 641296f
lite: final state 641296f
disk: loaded epoch 0i1028298254
boot: core limit: Invalid argument
loom: mapped 8192MB
boot: protected loom
live: mapped: GB/2.374.467.584
Assertion '!acc_y && "loom: downgrade detected"' failed in /home/nativeplanet/git/vere/pkg/noun/manage.c:665

bail: oops
home: bailing out

Stacktrace:
0   u3m_stacktrace                      pkg/noun/manage.c:920
1   u3m_bail                            pkg/noun/manage.c:0
2   _find_home                          pkg/noun/manage.c:0
3   u3m_pave                            pkg/noun/manage.c:726
4   u3m_boot                            pkg/noun/manage.c:2726
5   _disk_epoc_load                     pkg/vere/disk.c:2224
6   u3_disk_load                        pkg/vere/disk.c:2474
7   u3_mars_load                        pkg/vere/mars.c:1466
8   _cw_work                            pkg/vere/main.c:3152
9   _cw_utils                           pkg/vere/main.c:3247
10  main                                pkg/vere/main.c:3273
11  libc_start_main_stage2              /home/nativeplanet/zig-x86_64-linux-0.15.1/lib/libc/musl/src/env/__libc_start_main.c:95

pier: serf unexpectedly shut down

This was a 64 -> 32-bit migration on ~dacrex-sanneb. Note that this build e162414 does indeed include the downgrade detection code.

@dozreg-toplud

Copy link
Copy Markdown
Contributor Author

I don't see 64->32 bit migration pintouts though. And we are already at disk.c:2224, past the migration checks. So it seems that this pier was already on 32 bits when this crash occured?

My guess is that the ship already underwent 32->64->32 migrations before (or maybe just 64->32 if it is a newer ship). The last migration on the older version left some harmless garbage in that extra space in the first page of the loom, and now downgrade detection code aborts upon seeing it.

So the flag to skip the check seems like an appropriate solution.

@dozreg-toplud
dozreg-toplud marked this pull request as ready for review September 22, 2026 07:32
@dozreg-toplud
dozreg-toplud requested a review from a team as a code owner September 22, 2026 07:32
@dozreg-toplud dozreg-toplud changed the title main: --skip-downgrade-check flag main: --no-downgrade-check flag Sep 22, 2026
@matthew-levan

Copy link
Copy Markdown
Contributor

I don't see 64->32 bit migration pintouts though. And we are already at disk.c:2224, past the migration checks. So it seems that this pier was already on 32 bits when this crash occured?

My guess is that the ship already underwent 32->64->32 migrations before (or maybe just 64->32 if it is a newer ship). The last migration on the older version left some harmless garbage in that extra space in the first page of the loom, and now downgrade detection code aborts upon seeing it.

So the flag to skip the check seems like an appropriate solution.

According to @mopfel-winrux, the ship is currently 64-bit, so this is strange. We probably need to take a live look at it in gather at some point.

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