This is a problem I have often seen in complicated code; it just went away when doing small changes to the code.
Now I finally managed to create a small testcase triggering the problem.
When I compile the attached file using
sdcc -mz80 evelyn.c
sdcc generates assembler code that contains a jump to a nonexisting label. In the attached example a jump to $00115 is generated (it should probably go to $00106 instead)
I always found the nonexisting jump target to have a number somewhat higher than all existing labels.
I use sdcc 2.7.2 #4861.