The attached code which I believe is valid SystemVerilog compiles correctly but asserts in the of_JOIN_DETACH() routine in vvp. If the failing assert is commented out the code runs correctly, but the comment before the assert specifically states that automatic tasks/functions cannot be detached. I am concerned that removing the assert will allow my example to run correctly, but could then fail subtly for more complex cases.
Note that replacing the join_any with join_none changes the output as expected and does not assert. This seems odd to me since of_JOIN_DETACH() is still used but the count was increased from 1 to 2. Why should that change if the child is automatic?
Since Steve added join_any/join_none he may be the best person to work on this.