Hola Andres, gente Gracias por sus respuestas. Es notorio que lo que comentas no es muy conocido pues estaba viendo un ejemplo de openGL en VW y usan el #GetLasError como lo hacia yo. En dolphin esta usado en varios lugares.
saludos kiko --- El vie 27-ago-10, Andres Valloud <[email protected]> escribió: De: Andres Valloud <[email protected]> Asunto: Re: [clubSmalltalk] Dolphin X6 getLastError Para: [email protected] Fecha: viernes, 27 de agosto de 2010, 21:56 Por eso en DLLCC hay un pragma para llamar a una funcion de Windows devolviendo el GetLastError() si la funcion falla... el pragma es _wincall. Para *nix, tambien hay _syscall para poder obtener el valor de errno asociado a la funcion que acabas de llamar via el FFI. Lamentablemente, en VisualWorks hay un metodo para llamar a GetLastError() directamente en la clase Win32SystemSupport. Eso es un error y me gustaria que para la version nueva eso no este mas :)... 2010/8/27 Gerardo Richarte <[email protected]>: > On 08/26/2010 06:06 PM, Andres Valloud wrote: >> En el caso general, como harias para detectar que otro proceso >> interrumpio al proceso que esta por llamar a GetLastError(), > si, no se puede me parece en el caso general. Por otro lado, no > es solo si llamaron a GetLastError(). Si llamaron a cualquier otra > función de Windows, que resetea el GetLastError() también. > > El GetLastError() es único por cada thread de Windows, si dos > procesos nativos se interrumpen mutuamente, igual el GetLastError() > de cada uno está a salvo. El tema es que en Smalltalk pasan dos cosas: > > . green threads, donde un solo thread nativo aloja más de un hilo de > ejecución, y entonces se puede corromper el last error. > . La VM también hace cosas entre bytecode y bytecode, método y > método, etc. Si entre que llamas a la API y llamas a GetLastError(), > por ejemplo, caé un GC, y el GC le devuelve memoria al OS (VirtualProtect(), > mmap(), etc). eso va a cambiar el GetLastError(). > > como dijo Andres de entrada, no es seguro llamar a GetLastError() > via FFI o algún otro tipo de API call. Y la VM tendría que proveer un > mecanismo seguro de hacerlo (básicamente, llamar a GetLastError() > después de cada API call, y guardarlo para uso futuro) > > saludos, > gera > > -- > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > > http://www.clubSmalltalk.org -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
