A bug can undermine your troubleshooting / Como um bug pode minar a resolu��o de problemas

This article will be written in English and Portuguese.
Este artigo ser� escrito em Ingl�s e Portugu�s.

English version:

A few articles ago I tried to lecture on how to do a good troubleshooting. And I wrote that it all starts with an error or a bad behavior. When we have an error we should start from there. If we don't have it, it's harder.... But what about the situations when we have an error that says:

"No error message available"

Not good... I faced a situation on a customer where this happened. It's a Web application written in ASP using the windows driver (OleDB) and running on IIS. After an engine restart they started having an error that says:

No error message available, result code: E_UNEXPECTED(0x8000FFFF)
ErrorCode -2147418113

So, we had an error, but it wasn't really helpful. It wasn't too hard to find out what happened, since this particular engine has some variables to avoid problems with code set conversions and it was started without those variables in the environment. But It would have been quicker to understand if we had a proper error code. So, after solving the main issue, I dig in to the subject and found a very interesting APAR:

IC64220: THREADED OLEDB DOES NOT RETURN THE CORRECT ERROR MESSAGE

Basically, the driver was doing a bad use of the MS API to expose errors and in some situations the error structures were not properly initialized. This caused the "No error message available" information.
The fix is in CSDK 3.50.xC5 and if nothing else, this would be a good reason to upgrade.
It was not the first time I had "weird errors" in Windows environment, and in fact there were other similar bugs reported. So I leave here the suggestion to upgrade. Obviously, like with any other upgrade, test, test, test....

Portuguese version:

H� alguns artigos atr�s eu dei um "serm�o" sobre como fazer um bom despiste de problemas. E escrevi que tudo deve come�ar com um erro ou com um mau comportamento. Quando temos um erro devemos come�ar por a�. Se n�o tivermos � mais dific�l.... Mas e se tivermos um erro que diz:

"No error message available"

Nada bom... Encontrei uma situa��o num cliente onde isto apareceu. � uma aplica��o Web escrita em ASP utilizando os drivers Windows (OleDB) a correr em IIS. Ap�s uma paragem de um motor, come�aram a ter o seguinte erro:

No error message available, result code: E_UNEXPECTED(0x8000FFFF)
ErrorCode -2147418113

Portanto, tinhamos um erro, mas n�o era grande ajuda. N�o foi muito dif�cil descobrir o que se tinha passado, dado que este motor em particular tem algumas vari�veis posicionadas para evitar problemas na convers�o de caracteres entre diferentes mapas ou codesets, e estas vari�veis n�o estavam posicionadas quando se arrancou com o motor. Mas teria sido mais r�pido de entender se tiv�ssemos tido um c�digo e mensagem de erro v�lidos. Assim, ap�s resolver o problema principal, investiguei um pouco mais e encontrei o seguinte APAR:


IC64220: THREADED OLEDB DOES NOT RETURN THE CORRECT ERROR MESSAGE

Basicamente, o driver estava a fazer uma utiliza��o errada da API da MS para expor erros, e em determinadas situa��es as estruturas de erro n�o eram devidamente inicializadas. Isto causava a mensagem "No error message available"

A correc��o est� no CSDK 3.50.xC5, e mesmo s� por isto j� seria uma boa raz�o para fazer a actualiza��o.
N�o foi a primeira vez que me deparei com erros "estranhos" no ambiente Windows, e na verdade havia outros bugs semelhantes reportados. Assim, deixo a sugest�o para se fazer a actualiza��o. Claro que em qualquer situa��o de actuliza��o de vers�es, a ordem � testar, testar, testar....