You shouldn't cross reference units. Use unit 2 in unit 1 or unit 1 in unit 2, but not both. Also, it would be helpful if you provide the source. Otherwise there's no way anyone can help.
Nonsense. The compiler catches that at compile time...
Your advice about introducing a third unit, however is somewhat correct, but not related to an external SIGSEV.
You should have explained that unit references can be resolved by adding one to the interface and the other to the implementation section. (Common knowledge, even basic knowledge).
In the case that it is unresolvable your suggestion is correct, but not for the original problem. So he is still stuck...
If he gives us compilable code, it can be resolved much quicker. (doesn't have to work, but a full project that demonstrates the issue.