diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Daemon/CommLayerServerDBus.cpp | 7 | ||||
-rw-r--r-- | src/Daemon/CrashWatcher.cpp | 3 | ||||
-rw-r--r-- | src/Daemon/Daemon.cpp | 6 | ||||
-rw-r--r-- | src/Daemon/MiddleWare.cpp | 53 |
4 files changed, 36 insertions, 33 deletions
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp index fef8c578..ddfbba49 100644 --- a/src/Daemon/CommLayerServerDBus.cpp +++ b/src/Daemon/CommLayerServerDBus.cpp @@ -249,15 +249,14 @@ static int handle_Report(DBusMessage* call, DBusMessage* reply) } } +#if 0 //const char * sender = dbus_message_get_sender(call); if (!user_conf_data.empty()) { - std::string PluginName; map_map_string_t::const_iterator it_user_conf_data = user_conf_data.begin(); for (; it_user_conf_data != user_conf_data.end(); it_user_conf_data++) { - PluginName = it_user_conf_data->first; -#if DEBUG + std::string PluginName = it_user_conf_data->first; std::cout << "plugin name: " << it_user_conf_data->first; map_string_t::const_iterator it_plugin_config; for (it_plugin_config = it_user_conf_data->second.begin(); @@ -266,11 +265,11 @@ static int handle_Report(DBusMessage* call, DBusMessage* reply) { std::cout << " key: " << it_plugin_config->first << " value: " << it_plugin_config->second << std::endl; } -#endif // this would overwrite the default settings //g_pPluginManager->SetPluginSettings(PluginName, sender, plugin_settings); } } +#endif long unix_uid = get_remote_uid(call); report_status_t argout1; diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp index 8a1aacdd..80d8cd47 100644 --- a/src/Daemon/CrashWatcher.cpp +++ b/src/Daemon/CrashWatcher.cpp @@ -98,13 +98,12 @@ vector_map_crash_data_t GetCrashInfos(const char *pUID) */ map_crash_data_t CreateReport(const char* pUUID, const char* pUID, int force) { - map_crash_data_t crashReport; - /* FIXME: starting from here, any shared data must be protected with a mutex. * For example, CreateCrashReport does: * g_pPluginManager->GetDatabase(g_settings_sDatabase.c_str()); * which is unsafe wrt concurrent updates to g_pPluginManager state. */ + map_crash_data_t crashReport; mw_result_t res = CreateCrashReport(pUUID, pUID, force, crashReport); switch (res) { diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index 2964d582..c7acffc3 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -320,9 +320,9 @@ static void FindNewDumps(const char* pPath) vector_string_t::iterator itt = dirs.begin(); for (; itt != dirs.end(); ++itt) { - map_crash_data_t crashinfo; try { + map_crash_data_t crashinfo; mw_result_t res = SaveDebugDump(itt->c_str(), crashinfo); switch (res) { @@ -476,11 +476,11 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin worst_dir = ""; } - map_crash_data_t crashinfo; try { std::string fullname = concat_path_file(DEBUG_DUMPS_DIR, name); - + map_crash_data_t crashinfo; +//todo: rename SaveDebugDump to ???? it does not save crashinfo, it FETCHES crashinfo mw_result_t res = SaveDebugDump(fullname.c_str(), crashinfo); switch (res) { diff --git a/src/Daemon/MiddleWare.cpp b/src/Daemon/MiddleWare.cpp index 4f24ee11..a2b20e68 100644 --- a/src/Daemon/MiddleWare.cpp +++ b/src/Daemon/MiddleWare.cpp @@ -120,29 +120,11 @@ static char* is_text_file(const char *name, ssize_t *sz) return NULL; /* it's binary */ } -/** - * Transforms a debugdump direcortry to inner crash - * report form. This form is used for later reporting. - * @param pDebugDumpDir A debugdump dir containing all necessary data. - * @param pCrashData A created crash report. - */ -static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& pCrashData) +static void load_crash_data_from_debug_dump(CDebugDump& dd, map_crash_data_t& data) { - CDebugDump dd; - dd.Open(pDebugDumpDir); - if (!dd.Exist(FILENAME_ARCHITECTURE) - || !dd.Exist(FILENAME_KERNEL) - || !dd.Exist(FILENAME_PACKAGE) - || !dd.Exist(FILENAME_COMPONENT) - || !dd.Exist(FILENAME_RELEASE) - || !dd.Exist(FILENAME_EXECUTABLE) - ) { - throw CABRTException(EXCEP_ERROR, "DebugDumpToCrashReport(): One or more of important file(s) are missing"); - } - std::string short_name; std::string full_name; - pCrashData.clear(); + dd.InitGetNextFile(); while (dd.GetNextFile(&short_name, &full_name)) { @@ -150,7 +132,7 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& char *text = is_text_file(full_name.c_str(), &sz); if (!text) { - add_to_crash_data_ext(pCrashData, + add_to_crash_data_ext(data, short_name.c_str(), CD_BIN, CD_ISNOTEDITABLE, @@ -173,7 +155,7 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& || short_name == FILENAME_RELEASE || short_name == FILENAME_EXECUTABLE ) { - add_to_crash_data_ext(pCrashData, + add_to_crash_data_ext(data, short_name.c_str(), CD_TXT, CD_ISNOTEDITABLE, @@ -190,7 +172,7 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& && short_name != FILENAME_COMMENT ) { add_to_crash_data_ext( - pCrashData, + data, short_name.c_str(), CD_TXT, CD_ISEDITABLE, @@ -201,6 +183,29 @@ static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& } /** + * Transforms a debugdump directory to inner crash + * report form. This form is used for later reporting. + * @param pDebugDumpDir A debugdump dir containing all necessary data. + * @param pCrashData A created crash report. + */ +static void DebugDumpToCrashReport(const char *pDebugDumpDir, map_crash_data_t& pCrashData) +{ + CDebugDump dd; + dd.Open(pDebugDumpDir); + if (!dd.Exist(FILENAME_ARCHITECTURE) + || !dd.Exist(FILENAME_KERNEL) + || !dd.Exist(FILENAME_PACKAGE) + || !dd.Exist(FILENAME_COMPONENT) + || !dd.Exist(FILENAME_RELEASE) + || !dd.Exist(FILENAME_EXECUTABLE) + ) { + throw CABRTException(EXCEP_ERROR, "DebugDumpToCrashReport(): One or more of important file(s) are missing"); + } + + load_crash_data_from_debug_dump(dd, pCrashData); +} + +/** * Get a local UUID from particular analyzer plugin. * @param pAnalyzer A name of an analyzer plugin. * @param pDebugDumpDir A debugdump dir containing all necessary data. @@ -299,7 +304,7 @@ mw_result_t CreateCrashReport(const char *pUUID, std::string gUUID = GetGlobalUUID(analyzer.c_str(), row.m_sDebugDumpDir.c_str()); VERB3 log(" GetGlobalUUID:'%s'", gUUID.c_str()); - VERB3 log(" RunAnalyzerActions"); + VERB3 log(" RunAnalyzerActions('%s','%s')", analyzer.c_str(), row.m_sDebugDumpDir.c_str()); RunAnalyzerActions(analyzer.c_str(), row.m_sDebugDumpDir.c_str()); VERB3 log(" DebugDumpToCrashReport"); DebugDumpToCrashReport(row.m_sDebugDumpDir.c_str(), pCrashData); |