yeah, fixed it g00$e was right.
i was treating xinitrc as a config file not a script.
it seems X is designed to shutdown when the xinitrc script has finished executing.
so adding the thread '&' to all but the main WM at the end causes all binary's to execute,
and closes X when icewm finishes execution.