Jump to content

David Heffernan

Members
  • Content Count

    3710
  • Joined

  • Last visited

  • Days Won

    185

Posts posted by David Heffernan


  1. People for sure would rather have an error message than incorrect results. You are just kidding yourself if you say otherwise. It's simple human denial. 

     

    Suppressing errors will result in a program with more defects. We all know this to be true. And yet people still choose the path with more defects. 

     

    What happens when you access an array out of bounds with range checking disabled? Perhaps the memory is valid and so the program continues running. But now it's behaviour is unpredictable. Often you will corrupt memory which leads to obscure errors later that you can't tie back to the original defect. Or quite often it's a straight AV which is hardly preferable to a range check error, since it isn't reproducible.


  2. 8 minutes ago, Vandrovnik said:

    Of course I cannot guarentee it. But you wrote "Giving the user the wrong results is always worse than showing an error, even if the error is poorly worded.", so I gave you an example, where error message would be worse than ignoring the error.

    Yes, but since you don't know that the error will be inconsequential, it's kinda pointless looking at the impact. 


  3. 16 minutes ago, Sherlock said:

    Well, not showing exceptions and eliminating exception handling altogether are two different pairs of shoes, are they not? Why not log into some %APPDATA% folder every bug, that occurs and try to keep the application running. When a bug does manage to get reported ask someone to send you the (doubtlessly numerous) log files.

    Apple for example highly discourages to display error messages in their iOS human interface guidelines. BUT they do encourage logging, and offer means to retrieve those logs from devices.

    Better hope that the incorrect information that you show to the user is inconsequential. 


  4. 13 minutes ago, Vandrovnik said:

    Not always... In an application drawing 3D scene, a small error in object displayed somewhere far away from the observer does not metter, probably nobody notices. Of course in a book-keeping application the situation is quite different.

    I'm amazed that you can guarantee that the error will be far away from the observer. How did you do that? 


  5. 30 minutes ago, Lars Fosdal said:

    My apologies for being unclear: One crit sec per object instance, with separate locking per object field. Return to previous description. 

    Deadlocks are perfectly possible in this scenario. 

     

    The fact that you talk about the likelihood of deadlocks is frightening. I really don't get such a defeatist approach. 


  6. 2 hours ago, Lars Fosdal said:

    Naturally, it is a simplification and doesn't apply to every context, but we used to have lots of micro locking, and lots of lock failures.  

    That's because your design was broken, not that per field locks are inherently a problem. What matters is the algorithm, and having a deep understanding of the issues. Superficial rules like the one you gave do harm in my view. 

     

    2 hours ago, Lars Fosdal said:

    Straight assignments are atomic, unless they involve logic or reallocation.

    Data needs to be aligned. That's really the key point. 


  7. 55 minutes ago, Lars Fosdal said:

    Never do locking on a per field basis - unless you have one critical section per field.

    Otherwise, always lock the entire object

    Not sure I agree with this sweeping statement. Can you provide a rationale for that statement?

     

    I don't think that thread safety can be boiled down to rules like this. 

×