Realidades Paralelas

Thursday, August 03, 2006

Mais um bug da Microsoft

Mas calma, nao é a deste blog malhar a Microsoft, um esporte popular por aí mas bastante irracional. O bug é em um sistema de reconhecimento de voz, veja o vídeo.

Aí tem a explicação de um desenvolvedor da Microsoft, Larry Osterman. E aqui uma passagem do post:

If you've worked with analog audio, it's pretty clear what's happening here - there's a timing issue that is causing a positive feedback loop that resulted from a signal being fed back into an amplifier.

It turns out that one of the common causes of feedback loops in software is a concurrency issue with notifications - a notification is received with new data, which updates a value, updating the value causes a new notification to be generated, which updates a value, updating the value causes a new notification, and so-on...

The code actually handled most of the feedback cases involving notifications, but there were two lower level bugs that complicated things. The first bug was that there was an incorrect calculation that occurred when handling one of the values in the notification, and the second was that there was a concurrency issue - a member variable that should have been protected wasn't (I'm simplifying what actually happened, but this suffices).

As a consequence of these two very subtle low level bugs, the speech recognition engine wasn't able to correctly control the gain on the microphone, when it did, it hit the notification feedback loop, which caused the microphone to clip, which meant that the samples being received by the speech recognition engine weren't accurate.
Vejamos: um bug de concorrência. O problema não é a Microsoft, porque bugs como esse ocorrem por todo lugar. Será que realmente devemos ficar contentes com o atual estado da programação concorrente?

0 Comments:

Post a Comment

<< Home