DataFrame: crashed but can't find where is the error
for the codes is very complex, I take the most closely related part:
ULDataFrame resultdf;
for(auto el : current_board_contains.keys())
{
std::string ticker_str = el.toStdString();
auto functor1 = [ticker_str](const unsigned long &, const std::string &val)-> bool { return (val == ticker_str); };
ULDataFrame tempdf = sec_realtime_df.get_data_by_sel<std::string, decltype(functor1), double, std::string>("ticker", functor1);
resultdf = resultdf.concat<decltype(tempdf), double, std::string>(tempdf);
}
securities_realtime_df’s header is :
INDEX:0:<ulong>,id:0:<double>,ticker:0:<string>,name:0:<string>,close_price:0:<double>,change_percentage:0:<double>,change_amount:0:<double>,turnover_vol:0:<double>,turnover_amount:0:<double>,amplitude:0:<double>,highest_price:0:<double>,lowest_price:0:<double>,open_price:0:<double>,last_close:0:<double>,turnover_vol_ratio:0:<double>,turnover_rate:0:<double>,ma5:0:<double>,ma10:0:<double>,ma20:0:<double>,ma30:0:<double>,ma60:0:<double>,trade_date:0:<string>
qt debugger:
1 std::equal_to<hmdf::HeteroVector const *>::operator() stl_function.h 356 0x7ff77c70e9bb
2 std::__detail::_Equal_helper<hmdf::HeteroVector const *, std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const *>, unsigned long long, false>::_S_equals hashtable_policy.h 1461 0x7ff77c770589
3 std::__detail::_Hashtable_base<hmdf::HeteroVector const *, std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const *>, std::hash<hmdf::HeteroVector const *>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Hashtable_traits<false, false, true>>::_M_equals hashtable_policy.h 1834 0x7ff77c70dcd2
4 std::_Hashtable<hmdf::HeteroVector const *, std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>, std::allocator<std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>>, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const *>, std::hash<hmdf::HeteroVector const *>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>>::_M_find_before_node hashtable.h 1545 0x7ff77c702a5b
5 std::_Hashtable<hmdf::HeteroVector const *, std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>, std::allocator<std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>>, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const *>, std::hash<hmdf::HeteroVector const *>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>>::_M_find_node hashtable.h 655 0x7ff77c702946
6 std::_Hashtable<hmdf::HeteroVector const *, std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>, std::allocator<std::pair<hmdf::HeteroVector const * const, std::vector<std::string>>>, std::__detail::_Select1st, std::equal_to<hmdf::HeteroVector const *>, std::hash<hmdf::HeteroVector const *>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>>::find hashtable.h 1419 0x7ff77c713a1d
7 std::unordered_map<hmdf::HeteroVector const *, std::vector<std::string>>::find unordered_map.h 921 0x7ff77c728ae0
8 hmdf::HeteroVector::get_vector<std::string> HeteroVector.tcc 43 0x7ff77c668f9a
9 hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::create_column<std::string> DataFrame_set.tcc 63 0x7ff77c67290f
10 hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::load_column<std::string> DataFrame_set.tcc 452 0x7ff77c66fdf9
11 hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::sel_load_functor_<unsigned long long, double, std::string>::operator()<std::vector<std::string>> DataFrame_misc.tcc 607 0x7ff77c67596d
12 hmdf::HeteroVector::change_impl_help_<hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::sel_load_functor_<unsigned long long, double, std::string>&, std::string> HeteroVector.tcc 174 0x7ff77c6f007f
13 hmdf::HeteroVector::change_impl_<hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::sel_load_functor_<unsigned long long, double, std::string>&, hmdf::HeteroVector::type_list, double, std::string> HeteroVector.tcc 221 0x7ff77c6efa3e
14 hmdf::HeteroVector::change<hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::sel_load_functor_<unsigned long long, double, std::string>&> HeteroVector.h 196 0x7ff77c6f0620
15 hmdf::DataFrame<unsigned long, hmdf::HeteroVector>::get_data_by_sel<double, BoardSnapshot::dynamic_update_snapshot(DongfancaifuRealtimData)::<lambda(long unsigned int const&, double const&)>, double, std::string>(const char *, BoardSnapshot::<lambda(long unsigned int const&, double const&)> &) const DataFrame_get.tcc 637 0x7ff77c558764
16 BoardSnapshot::dynamic_update_snapshot boardsnapshot.cpp 226 0x7ff77c55473b
17 BoardSnapshot::qt_static_metacall moc_boardsnapshot.cpp 84 0x7ff77c4f3ec1
18 void doActivate<false>(QObject *, int, void * *) 0x68b978bb
19 MainWindow::update_boardsnapshot_frommainwindow moc_mainwindow.cpp 154 0x7ff77c4f4b30
20 MainWindow::qt_static_metacall moc_mainwindow.cpp 83 0x7ff77c4f4886
21 QObject::event(QEvent *) 0x68a91565
22 QWidget::event(QEvent *) 0xdf40d0
23 QMainWindow::event(QEvent *) 0xeebff3
24 QApplicationPrivate::notify_helper(QObject *, QEvent *) 0xdb790e
25 QApplication::notify(QObject *, QEvent *) 0xdbe3e3
26 QCoreApplication::notifyInternal2(QObject *, QEvent *) 0x68a656ea
27 QCoreApplicationPrivate::sendPostedEvents(QObject *, int, QThreadData *) 0x68a6c745
28 QWindowsGuiEventDispatcher::sendPostedEvents qwindowsguieventdispatcher.cpp 80 0x6a90376e
29 QEventDispatcherWin32::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) 0x68abc0b0
30 QWindowsGuiEventDispatcher::processEvents qwindowsguieventdispatcher.cpp 73 0x6a903755
31 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) 0x68a64405
32 QCoreApplication::exec() 0x68a6d765
33 main main.cpp 22 0x7ff77c50454a
the code work in sub thread and send a signal after finished. the main thread will update UI after recieved the signal.
the process is continuing and iterating. if I do nothing, it work fine.
and now if I create a new widget , when the data of the widget is calculating, sometime , the app crashed. not always crashed,
can you find some clues from the debugger info?
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 25 (9 by maintainers)
@hosseinmoein after debug for two days, I finally find this problem is caused by a conflict between postgresql and mingw64. the comparison operator about thread id can’t work after loading postgresql. change findpackage to find_library resolved the problem! thanks again!