In my experience, errors like this are hard to diagnose.
The first thing I would do is to check whether the error is associated with a change in estimation phase.
The console output will show the current phase as the first entry on each line. For example, the following line:
3 191 -log(L): 2.34857e+006 Spbio: 9077.17 411.047 cat 207.015
shows that estimation is in phase 3, iteration 191, with the remaining values showing total neg-log-likelihood, startyr and endyr spawning biomass, and catch penalty.
If it's a change in phase causing the issue, look for parameters that are newly estimated in that phase. Changing phasing of parameters in the control file would potentially narrow down the problem parameter (if that's the issue).
A second debugging approach you could pursue would be to use the ParmTrace.sso file. I would set the starter file to read
3 # write parm values to ParmTrace.sso (0=no,1=good,active; 2=good,all; 3=every_iter,all_parms; 4=every,active)
which will cause the ParmTrace.sso file to report all parameters from each step in the iteration. Looking through that file for values that look strange associated with the iteration where the error occurred may yield something.
Writing to ParmTrace.sso probably slows down estimation, so it's probably best to leave that setting at 0 when you're not trying to debug a model.
-Ian