Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bad mapblock causes the mapper to segfault #5

Open
VanessaE opened this issue May 13, 2014 · 0 comments
Open

Bad mapblock causes the mapper to segfault #5

VanessaE opened this issue May 13, 2014 · 0 comments
Labels

Comments

@VanessaE
Copy link

Title says it all :-)

If the mapper runs across a bad mapblock in the source map file (at least in the case of an sqlite map), it will eventually segfault. Here's an example backtrace, where the map in question is known to have a bad block at or near 0,+31000,0.

root@ks4006351:/home/minetest/minetestmapper# gdb --args /home/minetest/minetestmapper/minetestmapper         --drawscale         --geometry -5000:-7500+12000+15000 -i /home/minetest/.minetest/worlds/Vanilla_World/ -o /home/vanessa/www/vanessa/hobbies/minetest/worldmaps/Vanilla_World.png
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/minetest/minetestmapper/minetestmapper...done.
(gdb) run
Starting program: /home/minetest/minetestmapper/minetestmapper --drawscale --geometry -5000:-7500+12000+15000 -i /home/minetest/.minetest/worlds/Vanilla_World/ -o /home/vanessa/www/vanessa/hobbies/minetest/worldmaps/Vanilla_World.png
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00007e1378eef4a2 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt full
#0  0x00007e1378eef4a2 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x00007e13796b23a0 in char* std::string::_S_construct<char const*>(char const*, char const*, std::allocator<char> const&, std::forward_iterator_tag) ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#2  0x00007e13796b249d in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, unsigned long, std::allocator<char> const&) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
No symbol table info available.
#3  0x000000000041f725 in TileGenerator::renderMap (this=0x7fffffffe750)
    at /home/minetest/minetestmapper/TileGenerator.cpp:435
        nodeId = 31520
        nameLen = 23388
        name = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x6533bb8 "414457, [\"_hack_other_info\"] = \"return { [\\\"itemstring\\\"] = \\\"default:sapling 3\\\" }\" }"}}
        i = 919
        numMappings = 50265
        pos = @0xa8d4820: {x = -1, y = 1937, z = 0}
        dataOffset = 25614128
---Type <return> to continue, or q <return> to quit---
        mapData = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x6ec7f58 ""}}
        mapMetadata = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<unsigned char>> = {<__gnu_cxx::new_allocator<unsigned char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x466ea38 ""}}
        data = 0x7e13741fd028 "\031\f\002\002x\234\355\301\061\001"
        staticObjectCount = 28023
        length = 25614370
        version = 25 '\031'
        decompressor = {
          m_data = 0x7e13741fd028 "\031\f\002\002x\234\355\301\061\001", 
          m_seekPos = 52, m_size = 25614370}
        allReaded = true
        it = {_M_node = 0xa8d4810}
        xPos = -1
        blockStack = @0xb1d7ca8: {<std::_List_base<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > >, std::allocator<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > > > >> = {
            _M_impl = {<std::allocator<std::_List_node<std::pair<BlockPos, std::---Type <return> to continue, or q <return> to quit---
basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > > > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > > > >> = {<No data fields>}, <No data fields>}, 
              _M_node = {_M_next = 0xa8d4810, 
                _M_prev = 0x722cf10}}}, <No data fields>}
        position = {_M_node = 0x85e47e0}
        zPos = 256
        blocks = {_M_t = {
            _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<short const, std::list<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > >, std::allocator<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > > > > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<short const, std::list<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > >, std::allocator<std::pair<BlockPos, std::basic_string<unsigned char, std::char_traits<unsigned char>, std::allocator<unsigned char> > > > > > > >> = {<No data fields>}, <No data fields>}, 
              _M_key_compare = {<std::binary_function<short, short, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, 
                _M_parent = 0x8763960, _M_left = 0x2d23800, 
                _M_right = 0x3abbda0}, _M_node_count = 957}}}
---Type <return> to continue, or q <return> to quit---
        zPosition = {_M_node = 0x3d49780}
        zlist = {<std::_List_base<int, std::allocator<int> >> = {
            _M_impl = {<std::allocator<std::_List_node<int> >> = {<__gnu_cxx::new_allocator<std::_List_node<int> >> = {<No data fields>}, <No data fields>}, 
              _M_node = {_M_next = 0x39c6080, 
                _M_prev = 0x49da620}}}, <No data fields>}
#4  0x000000000041eb37 in TileGenerator::generate (this=0x7fffffffe750, 
    input=..., output=...)
    at /home/minetest/minetestmapper/TileGenerator.cpp:251
        input_path = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x28688b8 "/home/minetest/.minetest/worlds/Vanilla_World/"}}
#5  0x000000000042a2a9 in main (argc=8, argv=0x7fffffffeaf8)
    at /home/minetest/minetestmapper/mapper.cpp:156
        generator = {m_bgColor = {r = 255 '\377', g = 255 '\377', 
            b = 255 '\377', a = 0 '\000'}, m_scaleColor = {r = 0 '\000', 
            g = 0 '\000', b = 0 '\000', a = 0 '\000'}, m_originColor = {
            r = 255 '\377', g = 0 '\000', b = 0 '\000', a = 0 '\000'}, 
          m_playerColor = {r = 255 '\377', g = 0 '\000', b = 0 '\000', 
            a = 0 '\000'}, m_drawOrigin = false, m_drawPlayers = false, 
          m_drawScale = true, m_drawAlpha = false, m_shading = true, 
          m_border = 40, m_backend = {static npos = <optimized out>, 
---Type <return> to continue, or q <return> to quit---
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x2868768 "sqlite3"}}, 
          m_db = 0x2868780, m_image = 0x4072e80, m_blockPixelAttributes = {
            _vptr.PixelAttributes = 0x42d290, m_pixelAttributes = {0x33071e40, 
              0x330895d0, 0x330a0d60, 0x330b84f0, 0x330cfc80, 0x330e7410, 
              0x330feba0, 0x33116330, 0x3312dac0, 0x33145250, 0x3315c9e0, 
              0x33174170, 0x3318b900, 0x331a3090, 0x331ba820, 0x331d1fb0, 
              0x331e9740, 0x33200ed0}, m_width = 12017}, m_xMin = -313, 
          m_xMax = 437, m_zMin = -469, m_zMax = 468, m_yMin = -30000, 
          m_yMax = 30000, m_geomX = -313, m_geomY = -469, m_geomX2 = 437, 
          m_geomY2 = 468, m_mapWidth = 12016, m_mapHeight = 15008, 
          m_positions = {<std::_List_base<std::pair<int, int>, std::allocator<std::pair<int, int> > >> = {
              _M_impl = {<std::allocator<std::_List_node<std::pair<int, int> > >> = {<__gnu_cxx::new_allocator<std::_List_node<std::pair<int, int> > >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x9fd8ac0, 
                  _M_prev = 0x7410f40}}}, <No data fields>}, m_nameMap = {
            _M_t = {
              _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<int const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<No data fields>}, <No data fields>}, 
---Type <return> to continue, or q <return> to quit---
                _M_key_compare = {<std::binary_function<int, int, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, 
                  _M_parent = 0x5421620, _M_left = 0x3c7da20, 
                  _M_right = 0x55f6da0}, _M_node_count = 86}}}, m_colors = {
            _M_t = {
              _M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ColorEntry> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, ColorEntry> > >> = {<No data fields>}, <No data fields>}, 
                _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x286cd70, 
                  _M_left = 0x286bbe0, _M_right = 0x289df40}, 
                _M_node_count = 2019}}}, m_readedPixels = {
            0 <repeats 16 times>}, m_unknownNodes = {_M_t = {
              _M_impl = {<std::allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >> = {<No data fields>}, <No data fields>}, 
                _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::cha---Type <return> to continue, or q <return> to quit---
r_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0xa481960, 
                  _M_left = 0x64c6ff0, _M_right = 0x4d47b60}, 
                _M_node_count = 27}}}, m_blockAirId = -1, m_blockIgnoreId = -1}
        option_index = 12
        c = -1
        long_options = {{name = 0x42d780 "help", has_arg = 0, flag = 0x0, 
            val = 104}, {name = 0x42d785 "input", has_arg = 1, flag = 0x0, 
            val = 105}, {name = 0x42d78b "output", has_arg = 1, flag = 0x0, 
            val = 111}, {name = 0x42d792 "bgcolor", has_arg = 1, flag = 0x0, 
            val = 98}, {name = 0x42d79a "scalecolor", has_arg = 1, flag = 0x0, 
            val = 115}, {name = 0x42d7a5 "origincolor", has_arg = 1, 
            flag = 0x0, val = 114}, {name = 0x42d7b1 "playercolor", 
            has_arg = 1, flag = 0x0, val = 112}, {
            name = 0x42d7bd "draworigin", has_arg = 0, flag = 0x0, val = 82}, {
            name = 0x42d7c8 "drawplayers", has_arg = 0, flag = 0x0, val = 80}, 
          {name = 0x42d7d4 "drawscale", has_arg = 0, flag = 0x0, val = 83}, {
            name = 0x42d7de "drawalpha", has_arg = 0, flag = 0x0, val = 101}, {
            name = 0x42d7e8 "noshading", has_arg = 0, flag = 0x0, val = 72}, {
            name = 0x42d7f2 "geometry", has_arg = 1, flag = 0x0, val = 103}, {
            name = 0x42d7fb "min-y", has_arg = 1, flag = 0x0, val = 97}, {
            name = 0x42d801 "max-y", has_arg = 1, flag = 0x0, val = 99}, {
            name = 0x42d807 "backend", has_arg = 1, flag = 0x0, val = 100}}
---Type <return> to continue, or q <return> to quit---
        input = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x28ac1d8 "/home/minetest/.minetest/worlds/Vanilla_World/"}}
        output = {static npos = <optimized out>, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, 
            _M_p = 0x2868848 "/home/vanessa/www/vanessa/hobbies/minetest/worldmaps/Vanilla_World.png"}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants