Обнаружил таки где проблема, хотя так и не понял полной причины.
int size=url.size();
wchar_t* env=new wchar_t[size];
env[size]=0;
url.toWCharArray(env);
lpszBuffer=env;
url - QString
lpszBuffer - LPCWSTR (const wchar_t*)
Я переделал env в статический массив и все заработало. Кстати ошибка выскакивала в модуле winnt.dll на освобождении памяти кучи.