The bug
The exit portal in the end generates at the highest block at 0 0 after opening a pre 1.9 world in 1.9 or newer versions. This can cause the portal to be incomplete. Additionally you might end up with end crystals from old end pillars inside it.
How to reproduce
Download
and drag it into
.minecraft\saves
.
:info: Set yourRender Distance
to 11 or above, due MC-137467.Open the world in the latest version (with the new dragon fight).
→ The portal generated at the highest block at 0 0. With this example it generated incomplete, see
.
How to reproduce (naturally generated)
Seed
-953538683905638291
Coordinates
/execute in minecraft:the_end run tp @s 0.35 22.00 0.79 379.99 90.00
Linked issues
is duplicated by 9
relates to 4
Attachments
Comments 15

Confirmed for 1.13.1.
I found out that exit portals could also naturally generate too low in extremely rare cases. To reproduce that, use the seed -953538683905638291, go to the end, and teleport to 3 19 0.
Confirmed for 19w14a
Confirmed for 19w14b

Maybe this issue could be fixed by generating the exit portal at a specific height (y1 or above) when there's no solid block at (0,0).

In 1.21-pre2.
Can confirm in 1.21

Still in 24w35a.

By looking at the level.dat you can see in those seeds the end portal is placed at Y -1 despite the end ending at Y0
[media]
The simple solution would be forbidding the y value for ExitPortalLocation from being lower than 1 (or better, bedrock_level +1 because of custom worlds)
Also most importantly all affected worlds from before the fix would need to have ExitPortalLocation datafixed to Y1
Confirmed for
15w47c The screenshot added shows the portal just below y=256 as in 1.8 a stone tower was placed that high.