-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed
Description
When ordering rows by the result of r.random(), rethinkdb sometimes crashes. Below is a stack trace and sample script. This only repros on Linux and did not repro when I ran it locally on my Mac.
import rethinkdb as r
conn = r.connect()
tables = r.db('test').table_list().run(conn)
if 'random' not in tables:
r.db('test').table_create('random').run(conn)
r.db('test').table('random').insert(dict(a=1)).run(conn)
r.db('test').table('random').insert(dict(b=2)).run(conn)
r.db('test').table('random').insert(dict(c=3)).run(conn)
print 'test.random created'
for _ in range(0, 4):
row = r.db('test').table('random').order_by(lambda t: r.random()).limit(1).run(conn)
print row
conn.close()Version: rethinkdb 2.2.5~0jessie (GCC 4.9.2)
error: Error in src/rdb_protocol/datum.cc at line 256:
error: Unreachable code:
error: Backtrace:
addr2line: addr2line: 'rethinkdb': No such file
'rethinkdb': No such file
error: Mon Mar 21 15:55:25 2016
1 [0xa8b7f0]: backtrace_t::backtrace_t() at 0xa8b7f0 (rethinkdb)
2 [0xa8bb69]: format_backtrace(bool) at 0xa8bb69 (rethinkdb)
3 [0xd0135d]: report_fatal_error(char const*, int, char const*, ...) at 0xd0135d (rethinkdb)
4 [0x8d190a]: ql::datum_t::data_wrapper_t::assign_copy(ql::datum_t::data_wrapper_t const&) at 0x8d190a (rethinkdb)
5 [0x865570]: void std::__insertion_sort<__gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<boost::_bi::unspecified, ql::orderby_term_t::lt_cmp_t, boost::_bi::list4<boost::_bi::value<ql::env_t*>, boost::_bi::value<profile::sampler_t*>, boost::arg<1>, boost::arg<2> > > > >(__gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, __gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<boost::_bi::unspecified, ql::orderby_term_t::lt_cmp_t, boost::_bi::list4<boost::_bi::value<ql::env_t*>, boost::_bi::value<profile::sampler_t*>, boost::arg<1>, boost::arg<2> > > >) at 0x865570 (rethinkdb)
6 [0x867bfe]: void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, ql::datum_t*, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<boost::_bi::unspecified, ql::orderby_term_t::lt_cmp_t, boost::_bi::list4<boost::_bi::value<ql::env_t*>, boost::_bi::value<profile::sampler_t*>, boost::arg<1>, boost::arg<2> > > > >(__gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, __gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, ql::datum_t*, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<boost::_bi::unspecified, ql::orderby_term_t::lt_cmp_t, boost::_bi::list4<boost::_bi::value<ql::env_t*>, boost::_bi::value<profile::sampler_t*>, boost::arg<1>, boost::arg<2> > > >) at 0x867bfe (rethinkdb)
7 [0x868383]: void std::__stable_sort_adaptive<__gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, ql::datum_t*, long, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<boost::_bi::unspecified, ql::orderby_term_t::lt_cmp_t, boost::_bi::list4<boost::_bi::value<ql::env_t*>, boost::_bi::value<profile::sampler_t*>, boost::arg<1>, boost::arg<2> > > > >(__gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, __gnu_cxx::__normal_iterator<ql::datum_t*, std::vector<ql::datum_t, std::allocator<ql::datum_t> > >, ql::datum_t*, long, __gnu_cxx::__ops::_Iter_comp_iter<boost::_bi::bind_t<boost::_bi::unspecified, ql::orderby_term_t::lt_cmp_t, boost::_bi::list4<boost::_bi::value<ql::env_t*>, boost::_bi::value<profile::sampler_t*>, boost::arg<1>, boost::arg<2> > > >) at 0x868383 (rethinkdb)
8 [0x86ab6b]: ql::orderby_term_t::eval_impl(ql::scope_env_t*, ql::args_t*, ql::eval_flags_t) const at 0x86ab6b (rethinkdb)
9 [0x7d0952]: ql::op_term_t::term_eval(ql::scope_env_t*, ql::eval_flags_t) const at 0x7d0952 (rethinkdb)
10 [0x8ea64a]: ql::runtime_term_t::eval_on_current_stack(ql::scope_env_t*, ql::eval_flags_t) const at 0x8ea64a (rethinkdb)
11 [0x8ea94c]: ql::runtime_term_t::eval(ql::scope_env_t*, ql::eval_flags_t) const at 0x8ea94c (rethinkdb)
12 [0x7cd19a]: ql::op_term_t::maybe_grouped_data(ql::scope_env_t*, ql::argvec_t*, ql::eval_flags_t, counted_t<ql::grouped_data_t>*, scoped_ptr_t<ql::val_t>*) const at 0x7cd19a (rethinkdb)
13 [0x7d030b]: ql::op_term_t::term_eval(ql::scope_env_t*, ql::eval_flags_t) const at 0x7d030b (rethinkdb)
14 [0x8ea64a]: ql::runtime_term_t::eval_on_current_stack(ql::scope_env_t*, ql::eval_flags_t) const at 0x8ea64a (rethinkdb)
15 [0x8ea94c]: ql::runtime_term_t::eval(ql::scope_env_t*, ql::eval_flags_t) const at 0x8ea94c (rethinkdb)
16 [0x6fbc46]: ql::query_cache_t::ref_t::run(ql::env_t*, ql::response_t*) at 0x6fbc46 (rethinkdb)
17 [0x6fd6be]: ql::query_cache_t::ref_t::fill_response(ql::response_t*) at 0x6fd6be (rethinkdb)
18 [0x7cb503]: rdb_query_server_t::run_query(ql::query_params_t*, ql::response_t*, signal_t*) at 0x7cb503 (rethinkdb)
19 [0xa88457]: void save_exception<void query_server_t::connection_loop<json_protocol_t>(linux_tcp_conn_t*, unsigned long, ql::query_cache_t*, signal_t*)::{lambda()#1}::operator()() const::{lambda()#1}>(std::__exception_ptr::exception_ptr*, std::string*, cond_t*, void query_server_t::connection_loop<json_protocol_t>(linux_tcp_conn_t*, unsigned long, ql::query_cache_t*, signal_t*)::{lambda()#1}::operator()() const::{lambda()#1}&&) at 0xa88457 (rethinkdb)
20 [0xa88a4a]: void query_server_t::connection_loop<json_protocol_t>(linux_tcp_conn_t*, unsigned long, ql::query_cache_t*, signal_t*)::{lambda()#1}::operator()() const at 0xa88a4a (rethinkdb)
21 [0x99c958]: coro_t::run() at 0x99c958 (rethinkdb)
error: Exiting.