You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
does not deadlock. Alternatively, uses = { export = [std:eval-id <| make-module $args] } also avoids the deadlock.
Interestingly, adjusting the scopes of variables within make-module can induce the deadlock even with these changes, which makes me think the problem is in the hypothetical make-module (which I have not been able to make a minimal reproduction for).
The text was updated successfully, but these errors were encountered:
Yeah, this is almost certainly a deadlock in identity calculation. The calculation needs to be improved such that if a value's identity is being computed and it needs to compute its own identity as part of that, it'll just return 0 or some other fixed value. That's why it is caused by your make-module implementation, and why std:eval-id or evaluating the module earlier avoids the problem. Usually the only way to create recursive values (which could cause self-dependency in identities) is with load, since std:recurse automatically handles this.
I have a complex example of a function that returns a module, used by another module, results in a deadlock.
uses = { export = [make-module $args] }
deadlocks, butdoes not deadlock. Alternatively,
uses = { export = [std:eval-id <| make-module $args] }
also avoids the deadlock.Interestingly, adjusting the scopes of variables within
make-module
can induce the deadlock even with these changes, which makes me think the problem is in the hypotheticalmake-module
(which I have not been able to make a minimal reproduction for).The text was updated successfully, but these errors were encountered: