Asynchronous error_logger:error_msg considered harmful?

Olivier BOUDEVILLE olivier.boudeville@REDACTED
Fri Sep 17 17:39:23 CEST 2010


When displaying a message with error_logger:error_msg/2, apparently this 
is done asynchronously, the call returns before the message is actually 
displayed in the console. 
As a result, if in the next few instructions the VM is halted (these two 
events must be often correlated), there is a race condition between the 
displaying and the halting: sometimes the message shows up, sometimes not.

Short of knowing a better solution, this was one of the very few places 
where a timer:sleep/1 call helped me, despite this is never a satisfying 
solution. And indeed it led to hiding a second race condition, this time 
in my code, which was difficult to track because of this awkward delay.

Apparently there could be a better solution based on the use of 
sys:get_status(error_logger) which could allow to wait just the duration 
needed until the operation is done, thus allowing somewhat to emulate a 
synchronous error_logger:error_msg/2 (I have not figured out yet out to 
use it properly).

I was wanting to advertise a bit this solution as it seems not very 
well-known. Besides, for error messages, wouldn't it be safer to be 
synchronous at the first place?

Best regards,

Olivier Boudeville.
Olivier Boudeville

EDF R&D : 1, avenue du Général de Gaulle, 92140 Clamart, France
Département SINETICS, groupe ASICS (I2A), bureau B-226
Office : +33 1 47 65 59 58 / Mobile : +33 6 16 83 37 22 / Fax : +33 1 47 
65 27 13

Ce message et toutes les pièces jointes (ci-après le 'Message') sont établis à l'intention exclusive des destinataires et les informations qui y figurent sont strictement confidentielles. Toute utilisation de ce Message non conforme à sa destination, toute diffusion ou toute publication totale ou partielle, est interdite sauf autorisation expresse.

Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de votre système, ainsi que toutes ses copies, et de n'en garder aucune trace sur quelque support que ce soit. Nous vous remercions également d'en avertir immédiatement l'expéditeur par retour du message.

Il est impossible de garantir que les communications par messagerie électronique arrivent en temps utile, sont sécurisées ou dénuées de toute erreur ou virus.

This message and any attachments (the 'Message') are intended solely for the addressees. The information contained in this Message is confidential. Any use of information contained in this Message not in accord with its purpose, any dissemination or disclosure, either whole or partial, is prohibited except formal approval.

If you are not the addressee, you may not copy, forward, disclose or use any part of it. If you have received this message in error, please delete it and all copies from your system and notify the sender immediately by return message.

E-mail communication cannot be guaranteed to be timely secure, error or virus-free.

More information about the erlang-questions mailing list