The 500 error can be caused by anything in your case.
What you could do in such situation is to dump the content of the response and check the Symfony debugging message.
I usually use such code snippet for quick checking such errors directly in terminal:
if (!$response->isSuccessful()) {
$block = $crawler->filter('div.text_exception > h1');
if ($block->count()) {
$error = $block->text();
}
}
where div.text_exception > h1
is the xpath from Symfony2 debug page to the message itself
Then just print the $error