* limitations under the License.
*/
-extern int fault_init(void);
+extern int fault_init(char **argv);
extern int fault_fini(void);
extern int fault_mark_call(const char *pkgname, const char *filename, const char *funcname, int noalarm, int life_time);
extern int fault_unmark_call(const char *pkgname, const char *filename, const char *funcname, int noalarm);
struct sigaction ALRM_act;
struct sigaction USR1_act;
struct sigaction ABRT_act;
+ char **argv;
} s_info = {
.marked = 0,
.disable_checker = 0,
+ .argv = NULL,
};
static void signal_handler(int signum, siginfo_t *info, void *unused)
CRITICAL_LOG("SIGNAL> Error code: %d\n", info->si_code);
CRITICAL_LOG("SIGNAL> Address: %p\n", info->si_addr);
CRITICAL_LOG("Package: [%s] Symbol[%s]\n", so_fname, symbol);
+
+ int len = strlen(s_info.argv[0]);
+ memset(s_info.argv[0], 0, len);
+ strncpy(s_info.argv[0], util_basename(so_fname), len - 1);
free(so_fname);
free(symbol);
return;
}
-HAPI int fault_init(void)
+HAPI int fault_init(char **argv)
{
struct sigaction act;
char *ecore_abort;
+ s_info.argv = argv;
+
act.sa_sigaction = signal_handler;
act.sa_flags = SA_SIGINFO;
if (sigaddset(&act.sa_mask, SIGUSR1) != 0) {
ErrPrint("Failed to add set: %s\n", strerror(errno));
}
+
if (sigaddset(&act.sa_mask, SIGALRM) != 0) {
ErrPrint("Failed to add set: %s\n", strerror(errno));
}
}
}
-static bool app_create(void *data)
+static bool app_create(void *argv)
{
int ret;
*
* So create callback doesn't do anything.
*/
- ret = fault_init();
+ ret = fault_init(argv);
DbgPrint("Crash recover is initiated: %d\n", ret);
ret = update_monitor_init();
event_callback.device_orientation = NULL;
event_callback.language_changed = app_language_changed;
event_callback.region_format_changed = app_region_changed;
- ret = app_efl_main(&argc, &argv, &event_callback, NULL);
+ ret = app_efl_main(&argc, &argv, &event_callback, argv);
critical_log_fini();
ErrPrint("Failed to init: %d\n", ret);
if (s_info.heap_monitor) {