#0 0x00007f65ea58cf89 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56 [Error: ../nptl/sysdeps/unix/sysv/linux/raise.c was not found in source tree] #1 0x00007f65ea590398 in __GI_abort () at abort.c:89 [Error: abort.c was not found in source tree] #2 0x00007f65eb0b66b5 in __gnu_cxx::__verbose_terminate_handler() () from /tmp/apport_sandbox_jMUHyA/usr/lib/x86_64-linux-gnu/libstdc++.so.6 #3 0x00007f65eb0b4836 in ?? () from /tmp/apport_sandbox_jMUHyA/usr/lib/x86_64-linux-gnu/libstdc++.so.6 #4 0x00007f65eb0b4863 in std::terminate() () from /tmp/apport_sandbox_jMUHyA/usr/lib/x86_64-linux-gnu/libstdc++.so.6 #5 0x00007f65eb0b4aa2 in __cxa_throw () from /tmp/apport_sandbox_jMUHyA/usr/lib/x86_64-linux-gnu/libstdc++.so.6 #6 0x00007f65eb1065d7 in std::__throw_out_of_range(char const*) () from /tmp/apport_sandbox_jMUHyA/usr/lib/x86_64-linux-gnu/libstdc++.so.6 #7 0x00007f65ed87537c in _M_check (__s=0x7f65ed8bd087 "basic_string::substr", __pos=18446744073709551615, this=0x7fff4330fe20) at /usr/include/c++/4.8/bits/basic_string.h:324 [Error: /usr/include/c++/4.8/bits/basic_string.h was not found in source tree] #8 substr (__n=18446744073709551615, __pos=18446744073709551615, this=0x7fff4330fe20) at /usr/include/c++/4.8/bits/basic_string.h:2208 [Error: /usr/include/c++/4.8/bits/basic_string.h was not found in source tree] #9 SmartctlParser::parse_full (this=this@entry=0x7fff433107b0, full=...) at smartctl_parser.cpp:215 210: if (tmp_pos != std::string::npos) 211: ++tmp_pos; // set to start of the next section 212: 213: section_end_pos = s.find("===", tmp_pos); // start of the next section 214: std::string section_body_str = hz::string_trim_copy(s.substr(tmp_pos, 215: (section_end_pos == std::string::npos ? section_end_pos : section_end_pos - tmp_pos))); 216: 217: status = parse_section(section_header, section_body_str) || status; 218: section_start_pos = section_end_pos; 219: } 220: #10 0x00007f65ed88cc5c in StorageDevice::parse_basic_data (this=this@entry=0x7f65eee6aa40, do_set_properties=do_set_properties@entry=true, emit_signal=emit_signal@entry=true) at storage_device.cpp:266 261: // Try to parse the properties. ignore its errors - we already got what we came for. 262: // Note that this may try to parse data the second time (it may already have 263: // been parsed by parse_data() which failed at it). 264: if (do_set_properties) { 265: SmartctlParser ps; 266: if (ps.parse_full(this->info_output_)) { // try to parse it 267: this->set_properties(ps.get_properties()); // copy to our drive, overwriting old data 268: } 269: } 270: 271: if (emit_signal) #11 0x00007f65ed88e848 in StorageDevice::fetch_basic_data_and_parse (this=this@entry=0x7f65eee6aa40, smartctl_ex=...) at storage_device.cpp:186 181: this->parse_basic_data(false, true); 182: return error_msg; 183: } 184: 185: // Set some properties too - they are needed for e.g. AODC status, etc... 186: return this->parse_basic_data(true); 187: } 188: 189: 190: 191: std::string StorageDevice::parse_basic_data(bool do_set_properties, bool emit_signal) #12 0x00007f65ed88e994 in StorageDevice::fetch_basic_data_and_parse (this=0x7f65eee6aa40, smartctl_ex=...) at storage_device.cpp:173 168: // and there is no information about the device manufacturer/etc... in the output. 169: // We detect this and set the device type to scsi to at least have _some_ info. 170: if (get_detected_type() == detected_type_invalid && get_type_argument().empty()) { 171: debug_out_info("app", "The device seems to be of different type than auto-detected, trying again with scsi.\n"); 172: this->set_type_argument("scsi"); 173: return this->fetch_basic_data_and_parse(smartctl_ex); // try again with scsi 174: } 175: 176: // Since the type error leads to "command line didn't parse" error here, 177: // we do this after the scsi stuff. 178: if (!error_msg.empty()) { #13 0x00007f65ed87f6b9 in (anonymous namespace)::detect_drives_linux_proc_partitions (drives=..., ex_factory=...) at storage_detector_linux.cpp:437 432: 433: hz::intrusive_ptr smartctl_ex = ex_factory->create_executor(ExecutorFactory::ExecutorSmartctl); 434: 435: for (std::size_t i = 0; i < devices.size(); ++i) { 436: StorageDeviceRefPtr drive(new StorageDevice(devices.at(i))); 437: drive->fetch_basic_data_and_parse(smartctl_ex); 438: 439: // 3ware controllers also export themselves as sd*. Smartctl detects that, 440: // so we can avoid adding them. Older smartctl (5.38) prints "AMCC", newer one 441: // prints "AMCC/3ware controller". It's better to search it this way. 442: if (!app_pcre_match("/try adding '-d 3ware,N'/im", drive->get_info_output())) { #14 0x00007f65ed884053 in detect_drives_linux (drives=..., ex_factory=...) at storage_detector_linux.cpp:820 815: // For example, on Ubuntu 8.04, /dev/disk/by-id contains two device 816: // links for two drives, but both point to the same sdb (instead of 817: // sda and sdb). Plus, there are no "*-partN" files (not that we need them). 818: // error_msg = detect_drives_linux_udev_byid(devices); // linux udev 819: 820: error_msg = detect_drives_linux_proc_partitions(drives, ex_factory); 821: if (!error_msg.empty()) { 822: error_msgs.push_back(error_msg); 823: } 824: 825: error_msg = detect_drives_linux_3ware(drives, ex_factory); #15 0x00007f65ed878eac in StorageDetector::detect (this=this@entry=0x7fff43311df0, drives=..., ex_factory=...) at storage_detector.cpp:40 35: 36: // Try each one and move to next if it fails. 37: 38: #if defined CONFIG_KERNEL_LINUX 39: 40: error_msg = detect_drives_linux(all_detected, ex_factory); // linux /proc/partitions as fallback. 41: 42: #elif defined CONFIG_KERNEL_FAMILY_WINDOWS 43: 44: error_msg = detect_drives_win32(all_detected, ex_factory); // win32 45: #16 0x00007f65ed87ab3e in StorageDetector::detect_and_fetch_basic_data (this=this@entry=0x7fff43311df0, put_drives_here=..., ex_factory=...) at storage_detector.cpp:150 145: 146: 147: std::string StorageDetector::detect_and_fetch_basic_data(std::vector& put_drives_here, 148: ExecutorFactoryRefPtr ex_factory) 149: { 150: std::string error_msg = detect(put_drives_here, ex_factory); 151: 152: if (error_msg.empty()) 153: fetch_basic_data(put_drives_here, ex_factory, false); // ignore its errors, there may be plenty of them. 154: 155: return error_msg; #17 0x00007f65ed82d600 in GscMainWindow::rescan_devices (this=this@entry=0x7f65eedac3a0) at gsc_main_window.cpp:1026 1021: sd.add_blacklist_patterns(blacklist_patterns); 1022: 1023: 1024: ExecutorFactoryRefPtr ex_factory(new ExecutorFactory(true, this)); // run it with GUI support 1025: 1026: std::string error_msg = sd.detect_and_fetch_basic_data(drives, ex_factory); 1027: 1028: bool error = false; 1029: 1030: // Catch permission errors. 1031: // executor errors and outputs, not reported through error_msg. #18 0x00007f65ed82e90a in GscMainWindow::populate_iconview (this=this@entry=0x7f65eedac3a0, smartctl_valid=smartctl_valid@entry=true) at gsc_main_window.cpp:138 133: while (Gtk::Main::events_pending()) // give expose event the time it needs 134: Gtk::Main::iteration(); 135: 136: } else if (rconfig::get_data("gui/scan_on_startup") // config option 137: && !rconfig::get_data("/runtime/gui/force_no_scan_on_startup")) { // command-line option 138: rescan_devices(); // scan for devices and fill the iconview 139: 140: } else { 141: iconview->set_empty_view_message(GscMainWindowIconView::message_scan_disabled); 142: iconview->clear_all(); // the message won't be shown without invalidating the region. 143: while (Gtk::Main::events_pending()) // give expose event the time it needs #19 0x00007f65ed82f6d9 in GscMainWindow::GscMainWindow (this=0x7f65eedac3a0, gtkcobj=, ref_ui=..., __in_chrg=, __vtt_parm=) at gsc_main_window.cpp:121 116: error_msg + "\n\nPlease specify the correct smartctl binary in Preferences.", 117: this, true, show_output_button); 118: } 119: 120: // Scan 121: populate_iconview(smartctl_valid); 122: 123: } 124: 125: 126: #20 0x00007f65ed819430 in get_widget_derived (widget=, name=..., this=) at /usr/include/gtkmm-2.4/gtkmm/builder.h:484 [Error: /usr/include/gtkmm-2.4/gtkmm/builder.h was not found in source tree] #21 AppUIResWidget::create () at applib/app_ui_res_utils.h:274 [Error: applib/app_ui_res_utils.h was not found in source tree] #22 0x00007f65ed80e9b8 in app_init_and_loop (argc=, argv=@0x7fff433129a0: 0x7fff43312a98) at gsc_init.cpp:500 495: // It will track all command executor outputs. 496: GscExecutorLogWindow::create(); 497: 498: 499: // Open the main window 500: GscMainWindow* win = GscMainWindow::create(); 501: if (!win) { 502: debug_out_fatal("app", "Cannot create the main window. Exiting.\n"); 503: return false; // cannot create main window 504: } 505: #23 0x00007f65ed7d15c5 in main (argc=1, argv=0x7fff43312a98) at gsc_main.cpp:48 43: hz::win32_redirect_stdio_to_files(); // redirect stdout/stderr to output files 44: } 45: #endif 46: 47: // initialize stuff and enter the main loop 48: if (!app_init_and_loop(argc, argv)) 49: return EXIT_FAILURE; 50: 51: 52: // print uncaught exceptions for non-gcc-compatible 53: #if !(defined HAVE_VERBOSE_TERMINATE_HANDLER && HAVE_VERBOSE_TERMINATE_HANDLER)