I traced the problem down to ir1-convert-hairy-lambda being interrupted by locall-already-let-converted being thrown, which causes a partially initialized optional-dispatch to be left in component-new-functionals of *current-component*. A fix which works for me is to not put the new optional-dispatch there until the function which can throw this tag returns. It works, survives the build and tests, and makes sense, but I'm still uncomfortable with it, since I don't understand why that tag is being thrown in the first place.
I traced the problem down to ir1-convert- hairy-lambda being interrupted by locall- already- let-converted being thrown, which causes a partially initialized optional-dispatch to be left in component- new-functionals of *current- component* . A fix which works for me is to not put the new optional-dispatch there until the function which can throw this tag returns. It works, survives the build and tests, and makes sense, but I'm still uncomfortable with it, since I don't understand why that tag is being thrown in the first place.