<p></p>
<p>Found this segfault while chaos testing commit: <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/openstreetmap/osm2pgsql/commit/691f016450b838d6a3bbf287e9a50c7b355512db/hovercard" href="https://github.com/openstreetmap/osm2pgsql/commit/691f016450b838d6a3bbf287e9a50c7b355512db"><tt>691f016</tt></a><br>
The Lua code isn't particulariy meaningful. However, I would expect some kind of error message, if something is not ok with the Lua code.</p>
<pre><code>#0  0x00007ffff67aa470 in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1  0x0000555555c5e9bc in get_transform (lua_state=0x40000378, column=...) at /home/mmd/osm2pgsql/src/output-flex.cpp:860
#2  0x0000555555c6fd8e in output_flex_t::add_row<osmium::Node> (this=0x5555565a37b0, table_connection=0x5555565a2850, object=...)
    at /home/mmd/osm2pgsql/src/output-flex.cpp:970
#3  0x0000555555c5da24 in output_flex_t::table_add_row (this=0x5555565a37b0) at /home/mmd/osm2pgsql/src/output-flex.cpp:784
#4  0x0000555555c54ed1 in lua_trampoline_table_add_row (lua_state=0x40000378) at /home/mmd/osm2pgsql/src/output-flex.cpp:64
#5  0x00007ffff6a15e37 in ?? () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#6  0x00007ffff6a6327c in lua_pcall () from /usr/lib/x86_64-linux-gnu/libluajit-5.1.so.2
#7  0x0000555555d5d3bf in luaX_pcall (lua_state=0x40000378, narg=1, nres=0) at /home/mmd/osm2pgsql/src/lua-utils.cpp:165
#8  0x0000555555c5fc35 in output_flex_t::call_process_function (this=0x5555565a37b0, index=1, object=...) at /home/mmd/osm2pgsql/src/output-flex.cpp:999
#9  0x0000555555c60d3a in output_flex_t::node_add (this=0x5555565a37b0, node=...) at /home/mmd/osm2pgsql/src/output-flex.cpp:1132
#10 0x0000555555b68ca7 in osmdata_t::node_add (this=0x7fffffffd4a0, node=...) at /home/mmd/osm2pgsql/src/osmdata.cpp:55
#11 0x0000555555bc7e2d in parse_osmium_t::node (this=0x7fffffffd540, node=...) at /home/mmd/osm2pgsql/src/parse-osmium.cpp:160
#12 0x0000555555c34cbc in osmium::detail::apply_item_impl<parse_osmium_t&, osmium::memory::Item> (item=..., handler=...)
    at /home/mmd/osm2pgsql/contrib/libosmium/include/osmium/visitor.hpp:61
#13 0x0000555555c30314 in osmium::apply_item<osmium::memory::Item, parse_osmium_t&> (item=...)
    at /home/mmd/osm2pgsql/contrib/libosmium/include/osmium/visitor.hpp:303
#14 0x0000555555c28579 in osmium::apply_impl<osmium::io::InputIterator<osmium::io::Reader, osmium::memory::Item>, parse_osmium_t&> (it=..., end=...)
    at /home/mmd/osm2pgsql/contrib/libosmium/include/osmium/visitor.hpp:317
#15 0x0000555555c1f3a7 in osmium::apply<osmium::io::InputIterator<osmium::io::Reader, osmium::memory::Item>, parse_osmium_t&> (it=..., end=...)
    at /home/mmd/osm2pgsql/contrib/libosmium/include/osmium/visitor.hpp:324
#16 0x0000555555c142cf in osmium::apply<osmium::io::Reader, parse_osmium_t&> (c=...) at /home/mmd/osm2pgsql/contrib/libosmium/include/osmium/visitor.hpp:331
#17 0x0000555555bc77b7 in parse_osmium_t::stream_file (this=0x7fffffffd540, filename="/home/mmd/btrfs/germany-latest.osm.pbf", fmt="auto")
    at /home/mmd/osm2pgsql/src/parse-osmium.cpp:128
#18 0x0000555555abb446 in main (argc=17, argv=0x7fffffffda68) at /home/mmd/osm2pgsql/src/osm2pgsql.cpp:91
</code></pre>
<p>Lua:</p>
<pre><code>local tables = {}

local pg_cols = {
    point = {
        'access'
    }
}

col_definitions = {
    point = {
        { column = 'way', type = 'point' },
        { column = 'tags', type = 'hstore' },
        { column = 'layer', type = 'int4' }
    }
}

local columns_map = {}
for tablename, columns in pairs(pg_cols) do
    columns_map[tablename] = {}
    for _, key in ipairs(columns) do
        table.insert(col_definitions[tablename], {column = key, type = "text"})
        columns_map[tablename][key] = true
    end
end

tables.point = osm2pgsql.define_table{
    name = 'planet_osm_point',
    ids = { type = 'node', id_column = 'osm_id' },
    columns = col_definitions.point
}

function layer (v)
    return v and string.find(v, "^-?%d+$") and tonumber(v) < 100 and tonumber(v) > -100 and v or nil
end

function clean_tags(tags)
    if next(tags) == nil then
        return true
    end

    return next(tags) == nil
end

function split_tags(tags, tag_map)
    local cols = {tags = {}}
    for key, value in pairs(tags) do
        if tag_map[key] then
            cols[key] = value
        else
            cols.tags[key] = value
        end
    end
    return cols
end

function add_point(tags)
    local cols = split_tags(tags, columns_map.point)
    cols['layer'] = layer(tags['layer'])
    tables.point:add_row(cols)
end

function osm2pgsql.process_node(object)
    if clean_tags(object.tags) then
        return
    end

    osm2pgsql.define_table{
      name = 'demo', 
      ids = { type = 'node', id_column = 'osm_id' },
      columns = col_definitions.point
    }

    add_point(object.tags)
end

function osm2pgsql.process_way(object)

end

function osm2pgsql.process_relation(object)

end
</code></pre>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/openstreetmap/osm2pgsql/issues/1150">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AA6353SWX74MQ6VRIJSPFGDRPXB5XANCNFSM4MYIIYFA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AA6353WQ3QAH6HZDHZR6XL3RPXB5XA5CNFSM4MYIIYFKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4JDSTEWA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/openstreetmap/osm2pgsql/issues/1150",
"url": "https://github.com/openstreetmap/osm2pgsql/issues/1150",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>