Boost logo

Boost :

Subject: Re: [boost] [thread] #2739 shouldn't at_thread_exit work on themain thread?
From: Larry Evans (cppljevans_at_[hidden])
Date: 2009-05-31 11:40:42


On 05/31/09 07:39, vicente.botet wrote:
[snip]
>
> As I said in another post, the patch is not correct. So please do not apply it.

I must have overlooked that post ;(

> The test case is not currently neither good because the test succeeds even if mycallable2() is not called . In order to test this the operator()() should contains an abort when the called.
>
> struct mycallable2
> {
> void operator()() const {
> mycallable2_called=true;
> std::cout << "mycallable2" << std::endl;
> ***** abort()
> };
> };
>
>
> And the Jamfile should the contain
>
> rule thread-run-fail ( sources )
> {
> return
> [ run-fail $(sources) ../build//boost_thread ]
> [ run-fail $(sources) ../src/tss_null.cpp ../build//boost_thread/<link>static
> : : : : $(sources[1]:B)_lib ]
> ;
> }
>
> test-suite "threads"
> : [ thread-run-fail test_ticket_2739.cpp ]
> ;
>
> Whithout these modification you can inspect the .output file on the bin.v2 directory and see if the trace "mycallable2" appears.
> Could you run the test case without applying the patch and send the output?
>
OK, I tried it by first rm'ing th patched thread.cpp, then doing svn
update for whole trunk. Then did bjam in test_patches.

This is all shown in attachment.

Welcome to the Emacs shell

~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test_patches $ cd ../../..
~/prog_dev/boost-svn/ro/boost-trunk $ svn update
At revision 53500.
~/prog_dev/boost-svn/ro/boost-trunk $ cd libs/thread/test/
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test $ rcsdiff Jamfile.v2
rcsdiff: RCS/Jamfile.v2,v: No such file or directory
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test $ cd ../test_patches/
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test_patches $ rcsdiff Jamfile.v2
===================================================================
RCS file: RCS/Jamfile.v2,v
retrieving revision 1.2
diff -r1.2 Jamfile.v2
26c26
< rule thread-run ( sources )

---
> rule thread-run-fail ( sources )
29,30c29,30
<     [ run $(sources) ../build//boost_thread ]
<     [ run $(sources) ../src/tss_null.cpp ../build//boost_thread/<link>static 
---
>     [ run-fail $(sources) ../build//boost_thread ]
>     [ run-fail $(sources) ../src/tss_null.cpp ../build//boost_thread/<link>static 
37c37
<         : [ thread-run  test_ticket_2739.cpp ]
---
>         : [ thread-run-fail test_ticket_2739.cpp ]
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test_patches $ rcsdiff test_ticket_2739.cpp 
===================================================================
RCS file: RCS/test_ticket_2739.cpp,v
retrieving revision 1.1
diff -r1.1 test_ticket_2739.cpp
26c26
<         //BOOST_CHECK(false && "mycallable2  has been called");
---
>         abort();
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test_patches $ bjam
sh: icpc: not found
docutils-dir=
tools-dir= /usr/bin/rst2html.py
...patience...
...found 1064 targets...
...updating 10 targets...
gcc.compile.c++ ../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.o
gcc.link ../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739
testing.capture-output ../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.run
    LD_LIBRARY_PATH=/home/evansl/prog_dev/boost-svn/ro/boost-trunk/bin.v2/libs/thread/build/gcc-4.2/debug/threading-multi:/usr/bin:/usr/lib:/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
     "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739"   > "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.output" 2>&1
    status=$?
    echo >> "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.output"
    echo EXIT STATUS: $status >> "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.output"
    if test $status -eq 0 ; then
        cp "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.output" "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.run"
    fi
    verbose=0
    if test $status -ne 0 ; then
        verbose=1
    fi
    if test $verbose -eq 1 ; then
        echo ====== BEGIN OUTPUT ======
        cat "../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.output"
        echo ====== END OUTPUT ======
    fi
    exit $status
..failed testing.capture-output ../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.run...
...removing ../../../bin.v2/libs/thread/test_patches/test_ticket_2739.test/gcc-4.2/debug/threading-multi/test_ticket_2739.run
gcc.compile.c++ ../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739.o
gcc.link ../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib
testing.capture-output ../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.run
    LD_LIBRARY_PATH=/usr/bin:/usr/lib:/usr/lib32:/usr/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
     "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib"   > "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.output" 2>&1
    status=$?
    echo >> "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.output"
    echo EXIT STATUS: $status >> "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.output"
    if test $status -eq 0 ; then
        cp "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.output" "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.run"
    fi
    verbose=0
    if test $status -ne 0 ; then
        verbose=1
    fi
    if test $verbose -eq 1 ; then
        echo ====== BEGIN OUTPUT ======
        cat "../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.output"
        echo ====== END OUTPUT ======
    fi
    exit $status
..failed testing.capture-output ../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.run...
...removing ../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.run
...failed updating 2 targets...
...skipped 4 targets...
...updated 4 targets...
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test_patches $ cat ../../../bin.v2/libs/thread/test_patches/test_ticket_2739_lib.test/gcc-4.2/debug/threading-multi/test_ticket_2739_lib.output
Running 1 test case...
mycallable1
*** No errors detected
EXIT STATUS: 0
~/prog_dev/boost-svn/ro/boost-trunk/libs/thread/test_patches $ 

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk