#define WAIT_FOR_OPT_TIMEOUT_SEC 60
#define MINICOREDUMPER_TIMEOUT 12*60
+#define TEMP_MAPS_FILENAME "maps.temp"
enum {
RET_EXCEED = 1,
return system_command_parallel(command);
}
-static void save_so_info()
+static void copy_maps()
{
char maps_path[PATH_MAX];
- char so_info_path[PATH_MAX];
+ char temp_maps_path[PATH_MAX];
snprintf(maps_path, sizeof(maps_path), "/proc/%s/maps",
crash_info.pid_info);
+ snprintf(temp_maps_path, sizeof(temp_maps_path), "%s/%s",
+ crash_info.temp_dir, TEMP_MAPS_FILENAME);
+
+ copy_file(maps_path, temp_maps_path);
+}
+
+static void remove_maps()
+{
+ char temp_maps_path[PATH_MAX];
+
+ snprintf(temp_maps_path, sizeof(temp_maps_path), "%s/%s",
+ crash_info.temp_dir, TEMP_MAPS_FILENAME);
+ if (unlink(temp_maps_path) < 0)
+ _E("Cannot remove %s: %m\n", temp_maps_path);
+}
+
+static void save_so_info()
+{
+ char maps_path[PATH_MAX];
+ char so_info_path[PATH_MAX];
+ snprintf(maps_path, sizeof(maps_path), "%s/%s",
+ crash_info.temp_dir, TEMP_MAPS_FILENAME);
+
snprintf(so_info_path, sizeof(so_info_path),
"%s/%s.%s", crash_info.pfx, crash_info.name, "so_info");
/* Exec dump_systemstate */
dump_state_pid = dump_system_state();
- /* Save shared objects info (file names, bulid IDs, rpm package names) */
- save_so_info();
+ /* Copy maps file to temp dir */
+ copy_maps();
/* Exec crash modules */
execute_crash_modules(argc, argv);
+ /* Save shared objects info (file names, bulid IDs, rpm package names) */
+ save_so_info();
+ remove_maps();
+
/* Wait dump_system_state */
wait_system_command(dump_state_pid);