[Boost-bugs] [Boost C++ Libraries] #3432: Boost:Test pointer error with g++ 64-bit on Mac OS X 10.6 Snow Leopard

Subject: [Boost-bugs] [Boost C++ Libraries] #3432: Boost:Test pointer error with g++ 64-bit on Mac OS X 10.6 Snow Leopard
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2009-09-10 20:06:49


#3432: Boost:Test pointer error with g++ 64-bit on Mac OS X 10.6 Snow Leopard
----------------------------------------------------+-----------------------
 Reporter: Justus Calvin <justus.c79@…> | Owner: rogeeff
     Type: Bugs | Status: new
Milestone: | Component: test
  Version: Boost 1.40.0 | Severity: Problem
 Keywords: test mac "snow leopard" pointer 64-bit |
----------------------------------------------------+-----------------------
 When I compile a program which uses Boost:Test on Mac OS X 10.6 "Snow
 Leopard" for 64-bit architecture, I get an error when the program is run.
 To demonstrate this error, I creating a sample program (see attached
 file), which contains 10 test suites, each containing 10 test cases. The
 error only appears after a certain number of test suites/cases have been
 added to the program, because I could not reproduce the error with 10 test
 suites with 1 test case each. The compile commands and out put are:

 {{{
 $ g++ -g -c -fmessage-length=0 -o"src/UnitTest.o" "../src/UnitTest.cpp"
 $ g++ -o "UnitTest" ./src/UnitTest.o
 $ ./UnitTest
 Running 100 test cases...

 *** No errors detected
 UnitTest(73438) malloc: *** error for object 0x3000100600630: pointer
 being freed was not allocated
 *** set a breakpoint in malloc_error_break to debug
 Abort trap
 }}}

 I then tried compiling this with g++ 4.0.1 (apple), g++ 4.2.1 (apple), g++
 4.4.1, and icpc 11.1 with and without -m32 option; all on Mac OS X 10.6.
 In addition, I also compiled my test program with g++ 4.3.3 on Ubuntu
 Linux 9.04 (x86_64 version) with and without -m32 option. Here are the
 results of those tests.

 g++ Mac OS X 10.6:
 v 4.0.1 32bit: Pass
 v 4.0.1 64bit: Fail
 v 4.2.1 32bit: Pass
 v 4.2.1 64bit: Fail
 v 4.4.1 32bit: Pass
 v 4.4.1 64bit: Fail

 icpc Mac OS X 10.6:
 v 11.1 32bit: Pass
 v 11.1 64bit: Pass

 g++ Linux x86_64:
 v 4.3.3 64bit: Pass

 It appears that the error only occurs with g++ 64bit code on Mac OS X.

 While debugging the program I found that the error occurs in
 boost/test/impl/framework.ipp in void
 boost::unit_test::framework_imp::clean(), when delete is called. However,
 I do not think the error is in this function. Since the problem is not
 present when it is compiled as a 32-bit program, it is likely caused by a
 64-bit value being written to a 32-bit address or something like that.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/3432>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:01 UTC