I've managed to get Sage 4.5 to build on FreeBSD (see
http://wiki.sagemath.org/freebsd/sage-4.5 for details) and it
seems to run (I'm still waiting for the test suite results)
but it consistently gets segmentation violations on exit.

Running "sage -gdb" and just exiting at the prompt, I get:
----------------------------------------------------------------------
| Sage Version 4.5, Release Date: 2010-07-16                         |
| Type notebook() for the GUI, and license() for information.        |
----------------------------------------------------------------------
/mnt/sage-4.5/local/bin/sage-ipython
GNU gdb 6.6 [GDB v6.6 for FreeBSD]
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-portbld-freebsd8.1"...
Python 2.6.4 (r264:75706, Jul 27 2010, 07:47:11)
[GCC 4.5.1 20100722 (prerelease)] on freebsd8
Type "help", "copyright", "credits" or "license" for more information.
sage:
Exiting Sage (CPU time 0m0.15s, Wall time 1m21.93s).

Program received signal SIGSEGV, Segmentation fault.
0x000000081fe4b861 in ~Commentator (this=0x81fe32c60) at commentator.C:59
59                                      err = -err;
Current language:  auto; currently c++
(gdb) where
#0  0x000000081fe4b861 in ~Commentator (this=0x81fe32c60) at commentator.C:59
#1  0x0000000800f252a6 in __cxa_finalize () from /lib/libc.so.7
#2  0x0000000800ed20f7 in exit () from /lib/libc.so.7
#3  0x00000008008514cf in Py_Exit (sts=0) at Python/pythonrun.c:1618
#4  0x00000008008515d9 in handle_system_exit () at Python/pythonrun.c:1618
#5  0x000000000037bc40 in ?? ()
#6  0x000000080146b998 in ?? ()
#7  0x0000000000000000 in ?? ()
(gdb) p *this
$1 = {_vptr.Commentator = 0x82005a3b0,
  cnull = {<std::basic_ios<char, std::char_traits<char> >> = {<std::ios_base> = 
{_vptr.ios_base = 0x82005a3b0, static boolalpha = std::_S_boolalpha,
        static dec = std::_S_dec, static fixed = std::_S_fixed,
        static hex = std::_S_hex, static internal = std::_S_internal,
        static left = std::_S_left, static oct = std::_S_oct,
        static right = 4294967168, static scientific = std::_S_scientific,
        static showbase = std::_S_showbase,
        static showpoint = std::_S_showpoint,
        static showpos = std::_S_showpos, static skipws = std::_S_skipws,
        static unitbuf = std::_S_unitbuf,
        static uppercase = std::_S_uppercase, static adjustfield = 4294967216,
        static basefield = std::_S_basefield,
        static floatfield = std::_S_floatfield,
        static badbit = std::_S_badbit, static eofbit = std::_S_eofbit,
        static failbit = std::_S_failbit, static goodbit = std::_S_goodbit,
        static app = std::_S_app, static ate = std::_S_ate,
        static binary = std::_S_bin, static in = std::_S_in,
        static out = std::_S_out, static trunc = std::_S_trunc,
        static beg = std::_S_beg, static cur = std::_S_cur,
        static end = std::_S_end, _M_precision = 34470410560, _M_width = 6,
        _M_flags = 0, _M_exception = std::_S_goodbit,
        _M_streambuf_state = 4098, _M_callbacks = 0x0, _M_word_zero = {
          _M_pword = 0x0, _M_iword = 0}, _M_local_word = {{_M_pword = 0x0,
            _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0,
            _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0,
            _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}, {_M_pword = 0x0,
            _M_iword = 0}, {_M_pword = 0x0, _M_iword = 0}}, _M_word_size = 0,
        _M_word = 0x8, _M_ios_locale = {static none = 0, static ctype = 1,
          static numeric = 2, static collate = 4, static time = 8,
          static monetary = 16, static messages = 32, static all = 63,
          _M_impl = 0x81fe32ca8, static _S_classic = 0x806993920,
          static _S_global = 0x806993920, static _S_categories = 0x806987ec0,
          static _S_once = {state = 1, mutex = 0x0}}}, _M_tie = 0x806993920,
      _M_fill = 0 '\0', _M_fill_init = false, _M_streambuf = 0x0,
      _M_ctype = 0x804dc6d40, _M_num_put = 0x8069926e0,
      _M_num_get = 0x806992a00}, _vptr.basic_ostream = 0x80698b940},
  _activities = {
    c = {<std::_Deque_base<LinBox::Commentator::Activity*, 
std::allocator<LinBox::Commentator::Activity*> >> = {
        _M_impl = {<std::allocator<LinBox::Commentator::Activity*>> = 
{<__gnu_cxx::new_allocator<LinBox::Commentator::Activity*>> = {<No data 
fields>}, <No data fields>}, _M_map = 0x0, _M_map_size = 1, _M_start = {_M_cur 
= 0x8012b38b0,
            _M_first = 0xffffffff00000001, _M_last = 0x8012b38b8,
            _M_node = 0x0}, _M_finish = {_M_cur = 0x0, _M_first = 0x0,
            _M_last = 0x0, _M_node = 0x0}}}, <No data fields>}},
  _messageClasses = {_M_t = {
      _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const char* 
const, LinBox::MessageClass*> > >> = 
{<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const char* const, 
LinBox::MessageClass*> > >> = {<No data fields>}, <No data fields>}, 
_M_key_compare = {<No data fields>}, _M_header = {
          _M_color = std::_S_red, _M_parent = 0x0, _M_left = 0x0,
          _M_right = 0x0}, _M_node_count = 0}}},
  _estimationMethod = LinBox::Commentator::BEST_ESTIMATE,
  _format = LinBox::Commentator::OUTPUT_CONSOLE, _show_timing = false,
  _show_progress = false, _show_est_time = false, _last_line_len = 0,
  _report = {<std::basic_ostream<char, std::char_traits<char> >> = {<error 
reading variable>, _iteration_str = {static npos = 18446744073709551615,
    _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = 
{<No data fields>}, <No data fields>}, _M_p = 0x0}}}
(gdb)

The exact problem is unclear.  The reported location: ~Commentator at
commentator.C:59 doesn't make sense because the give line number is
inside Linbox:nroot(), with ~Commentator significantly later in the
file.  Unfortunately, there's no spkg-check for linbox but "make
check" passes except for test-gf2 (which won't compile).  Does anyone
have any suggestions on where to look?

-- 
Peter Jeremy

Attachment: pgppRRjhqHlzK.pgp
Description: PGP signature

Reply via email to