So making the minor changes didn't really affect anything differently.
After experimenting some more, this is where I'm at.
the operations we do in code are basically:
* load rpt file
* clone subreport links
* log the report onto the DB
* update main report data source
* update subreport data source
* set sub report links
* set parameter values
** set subreport parameter values
* run the report viewer
The above generated the missing parameter values error.
If I remove the step of setting the subreport links, the report will run, but with the wrong parameters in the subreport (uses the default values)
If I move the set subreport links to after setting the parameter values, the app hangs somewhere in the report viewer.
Any ideas?