History log of /haiku/src/kits/support/Locker.cpp
Revision Date Author Comments
# 44f58305 03-Nov-2015 Michael Lotz <mmlr@mlotz.ch>

BLocker: Make misuse warning more useful.

Also print the locker sem (for manual name lookup) and the involved
threads. It was also missing the line terminator which messed up the
following output.

Also fix a typo in a comment.


# 1cffe0dc 03-Nov-2015 Michael Lotz <mmlr@mlotz.ch>

BLocker: Fix recursive count for "unusual" use cases.

Since a BLocker can be unlocked from other threads than the one holding
the lock, it can also be further unlocked even when already unlocked.
This caused the recursive count to become negative. The first lock then
needs to reinitialize the count to 1 for the lock balance to work again.

Just incrementing the negative recursive count lead to it never
counting back down from one to zero in the unlock case, which made the
BLocker impossible to unlock.

This makes the Haiku BLocker behave exactly like the BeOS one, including
the negative recursive count and reinitialization, as evidenced by its
debugging features showing the internal counts.

Alternatively to reinitializing the recursive count it could be
prevented from going below zero in the first place, but I don't see why
we should deviate from BeOS there while allowing its awkward unlock
behaviour.

This makes some more exotic use cases work like the BGLView <-> SDL
combination that previously would always just hang. While these abuses
should be reviewed/corrected, just hanging the BLocker doesn't seem
useful.


# 7c52cca9 28-Apr-2015 Adrien Destugues <pulkomandy@gmail.com>

Build fix.

Thanks to luroh for noticing.


# 5de22b9b 28-Apr-2015 Adrien Destugues <pulkomandy@gmail.com>

BLocker: make "unlock from wrong thread" only a warning.

Calling Debugger here causes issues with some software (mainly Mesa).
Only print a warning, this is enough for developers to see the problem,
and not as annoying for users.


# d350b0f0 22-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

Typo.


# 42274958 22-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

BLocker: call debugger() when unlocking from another thread

BeOS did allow other threads than the owner to unlock a BLocker (the be
book says so). We did not, and silently ignored the unlock attempt in
this case, probably resulting in a deadlock of applications using the
feature.

Call debugger instead so:
* The problem is made visible for such apps
* The debugger call is continuable so the app can be run, still

Will help making a decision on what to do here (follow BeOS or change
behavior) and make a final decision for #6400.


# 29e8fa59 24-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to Support Kit files


# 6f6dceac 27-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32758 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f451e14b 12-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added InitCheck() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29487 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0970b97b 22-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support_kit_config.h configuration header. ATM it only contains a
setting to force BLockers to be semaphore style. This may help with
debugging deadlocks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25096 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8e326c9c 25-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Some style changes I forgot to commit.
Also, BLocker now accepts NULL as a name and won't crash anymore in that case
("some BLocker" is then chosen as name).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 20b628d3 17-Jun-2004 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some cleanups for BStopWatch. Added the check for B_INTERRUPTED to the semaphore acquisition in BLocker


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8019 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 76441bab 15-May-2004 DarkWyrm <darkwyrm@gmail.com>

Add header
Minor tweaks to BClipboard


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7587 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52a38012 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c52cca9386e8185137e1eb2f3e1a938301fe57f 28-Apr-2015 Adrien Destugues <pulkomandy@gmail.com>

Build fix.

Thanks to luroh for noticing.


# 5de22b9bf661cdf4c5864e3d5772b601771e7f44 28-Apr-2015 Adrien Destugues <pulkomandy@gmail.com>

BLocker: make "unlock from wrong thread" only a warning.

Calling Debugger here causes issues with some software (mainly Mesa).
Only print a warning, this is enough for developers to see the problem,
and not as annoying for users.


# d350b0f0d455b12621d82fe6af25fcfb1252137d 22-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

Typo.


# 42274958297907618f9ac3df199b35dd3399d114 22-Dec-2014 Adrien Destugues <pulkomandy@gmail.com>

BLocker: call debugger() when unlocking from another thread

BeOS did allow other threads than the owner to unlock a BLocker (the be
book says so). We did not, and silently ignored the unlock attempt in
this case, probably resulting in a deadlock of applications using the
feature.

Call debugger instead so:
* The problem is made visible for such apps
* The debugger call is continuable so the app can be run, still

Will help making a decision on what to do here (follow BeOS or change
behavior) and make a final decision for #6400.


# 29e8fa5922c9f9a5eb09a2fcc92e7fb321d4cc59 24-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to Support Kit files


# 6f6dceac96325dce90ea3d7633f74d067e9b5f97 27-Aug-2009 Axel Dörfler <axeld@pinc-software.de>

* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32758 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f451e14bc2943245b03ce6acd379c12d74351269 12-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Added InitCheck() method.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29487 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0970b97bed90ae7d5452e412b9cfd6af8a3b0463 22-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Added support_kit_config.h configuration header. ATM it only contains a
setting to force BLockers to be semaphore style. This may help with
debugging deadlocks.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25096 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8e326c9cc1851a90bdce8659deae389de4cc5d16 25-Jul-2005 Axel Dörfler <axeld@pinc-software.de>

Some style changes I forgot to commit.
Also, BLocker now accepts NULL as a name and won't crash anymore in that case
("some BLocker" is then chosen as name).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13826 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 20b628d310c6fc13957c59adc4fdb2ea26195fac 17-Jun-2004 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some cleanups for BStopWatch. Added the check for B_INTERRUPTED to the semaphore acquisition in BLocker


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8019 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 76441bab6ebb9132d0bb0ab623087bd2b9e861e0 15-May-2004 DarkWyrm <darkwyrm@gmail.com>

Add header
Minor tweaks to BClipboard


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7587 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52a380120846174213ccce9c4aab0dda17c72083 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96