An illegal choice has been detected. Please contact the site administrator in drop down list
check for details in watchdog under form to get an indication of which form element is causing the grief - in your case it will be the 'roll' or subject name field (possibly both!)

if you are updating the option array and removing the currently set option, then you have 2 choices:

in your form builder, either 

unset($form_state['input']['roll']);


or

$options[$form_state['values']['roll']] 
 = "the option i'm trying to get rid of";  


the first option just discards the earlier selection, the latter option keeps it available (probably the first option is generally preferable)

additional: I've discovered I can also cause this error by messing my ajax call back so that the options are updated ok, but the form element in the browser isn't updated. In this case you will notice your options are not updating. You then need to double check your callbacks and div id's etc.

hth