Voxelizer crashes on startup in Linux if a disk with IO error is mounted


#1

When I launched Voxelizer, it crashed with the following error:

loading backup bagers
user-open error: Object does not implement the interface
terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
  what():  boost::filesystem::directory_iterator::operator++: Input/output error: "/media/lissanro/Dragon_2TB"
*** Aborted at 1560432770 (unix time) try "date -d @1560432770" if you are using GNU date ***
PC: @                0x0 (unknown)
*** SIGABRT (@0x3e8000028a9) received by PID 10409 (TID 0x7fda06ffd700) from PID 10409; stack trace: ***
    @          0x3cb628e google::(anonymous namespace)::FailureSignalHandler()
    @     0x7fda5a816390 (unknown)
    @     0x7fda58d6a428 gsignal
    @     0x7fda58d6c02a abort
    @          0x14368f5 __gnu_cxx::__verbose_terminate_handler()
    @          0x4204df6 __cxxabiv1::__terminate()
    @          0x42a1049 __cxa_call_terminate
    @          0x4210588 __gxx_personality_v0
    @          0x42a7f6b _Unwind_RaiseException_Phase2
    @          0x42a8b25 _Unwind_Resume
    @          0x1389fc1 boost::filesystem::detail::directory_iterator_increment()
    @          0x293917a boost::filesystem::detail::directory_iterator_construct()
    @          0x21a77f7 findLogsOnDrives()
    @          0x1b6cf21 ExternalSDHandlingModule::findLogs()
    @          0x1b6d6f8 _ZNSt17_Function_handlerIFSt10unique_ptrINSt13__future_base12_Result_baseENS2_8_DeleterEEvENS1_12_Task_setterIS0_INS1_7_ResultIvEES3_ENSt6thread8_InvokerISt5tupleIJZN24ExternalSDHandlingModule13performUpdateEvEUlvE0_EEEEvEEE9_M_invokeERKSt9_Any_data
    @          0x1534bf9 std::__future_base::_State_baseV2::_M_do_set()
    @     0x7fda5a813a99 __pthread_once_slow
    @          0x1b6d611 _ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJZNSt13__future_base17_Async_state_implINS1_IS2_IJZN24ExternalSDHandlingModule13performUpdateEvEUlvE0_EEEEvEC4EOS8_EUlvE_EEEEE6_M_runEv
    @          0x4232d1f execute_native_thread_routine
    @     0x7fda5a80c6ba start_thread
    @     0x7fda58e3c41d clone
    @                0x0 (unknown)
zsh: abort (core dumped)  voxelizer

It turned out one of my hard drives (mounted at /media/lissanro/Dragon_2TB) started to give IO error (the disk is actually fine, but it looks like my SATA cable is worn out since any disk connected to it “becomes” faulty):

$ ls /media/lissanro/Dragon_2TB 
ls: /media/lissanro/Dragon_2TB: Input/output error
ls: reading directory '/media/lissanro/Dragon_2TB': Input/output error

However, this hard drive is was not used in my system and Voxelizer definitely does not need anything from it.

I think Voxelizer tries to look at all mounted media, nothing wrong with that, but it should not crash if I/O error is encountered on a disk where are no files Voxelizer actually needs to run - for example, just ignore problematic disk drive.


#2

Hi @lissanro, thanks for the feedback, our developer responsible for Linux is currently on holiday, we will get back to this when he will return.