#
Find Lock Problems with Booby Trap

A Booby Trap is used in CINELERRA-GG for setting a trap to catch lock problems that might have been missed. It will trap boobies only if compile by adding --with-booby on the configuration command line. This is the default if you compile using ./bld.sh from the GIT repository. It should not interfere with normal execution.

If you have the time and inclination, enable --with-booby and send any trap output that you find. Maybe you will catch some boobies and if you do, send a snapshot of any boobies you find.

There are 2 potential traps:

- If you try to unlock a lock when it is not locked
- If you execute a drawing operation without holding the window lock

The trap prints the following in the controlling terminal window:

BOOBY! <backtrace>

An example backtrace is below along with a hint below on how to analyze:

    /home/cin5/bin/./cin(_Z5boobyv+0x3f) [0x557069fa9b2f] /home/cin5/bin/./cin(_ZN13BC_WindowBase9draw_lineEiiiiP9BC_Pixmap+0x3b)0x557069fb9a9b]
    /home/cin5/bin/./cin(\_ZN10BC_ListBox11draw_borderEi+0x73)[0x557069f7dc73]
    /home/cin5/bin/./cin(+0x9707fb) [0x557069f7e7fb]
    /home/cin5/bin/./cin(\ZN10BC\ListBox16center\selectionEv+0x4e)[0x557069f7f2ae]
    /home/cin5/bin/plugins/video/sketcher.plugin(_ZN17SketcherCurveList6updateEi+0x1a0)[0x7f1b8002a4c0]
    /home/cin5/bin/plugins/video/sketcher.plugin(_ZN18SketcherCurveColor17handle_done_eventEi+0x76)[0x7f1b8002a5f6]
    /home/cin5/bin/./cin(_ZN15BC_DialogThread3runEv+0xd8)[0x557069f6fb78]
    /home/cin5/bin/./cin(_ZN6Thread10entrypointEPv+0x45)[0x557069fc5995]
    /usr/lib/libpthread.so.0(+0x7a9d) [0x7f1b91b4ea9d]
    /usr/lib/libc.so.6(clone+0x43) [0x7f1b90accb23]

To see which routine is reporting the booby key in:

c++filt

And then the 2nd line in the backtrace above:

_ZN13BC_WindowBase9draw_lineEiiiiP9BC_Pixmap

It comes back with the routine as:

BC_WindowBase::draw_line(int, int, int, int, BC_Pixmap*)