Skip to content

Commit fee9852

Browse files
authored
Merge pull request #19 from bbockelm/fix_deadlocks
Fix deadlock and crash
2 parents 681a654 + 7a7ba64 commit fee9852

2 files changed

Lines changed: 8 additions & 8 deletions

File tree

src/gridftp_hdfs.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,13 @@ GlobusExtensionDefineModule(globus_gridftp_server_hdfs) =
9696
void
9797
segv_handler (int sig)
9898
{
99-
printf ("SEGV triggered in native code.\n");
99+
write(1, "SEGV triggered in native code.\n", 31);
100100
const int max_trace = 32;
101101
void *trace[max_trace];
102-
char **messages = (char **)NULL;
103102
int i, trace_size = 0;
104103

105104
trace_size = backtrace(trace, max_trace);
106-
messages = backtrace_symbols(trace, trace_size);
107-
for (i=0; i<trace_size; ++i) {
108-
printf("[bt] %s\n", messages[i]);
109-
}
105+
backtrace_symbols_fd(trace, trace_size, 1);
110106
raise (SIGQUIT);
111107
signal (SIGSEGV, SIG_DFL);
112108
raise (SIGSEGV);

src/gridftp_hdfs_cksm.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,10 @@ globus_result_t hdfs_get_checksum_internal(hdfs_handle_t *hdfs_handle, const cha
474474
}
475475

476476
// Not used in this function except in the contents of the error message.
477-
hdfs_handle->pathname = strdup(pathname);
477+
int allocated_pathname;
478+
if ((allocated_pathname = (hdfs_handle->pathname == NULL))) {
479+
hdfs_handle->pathname = strdup(pathname);
480+
}
478481

479482
size_t cksm_len = strlen(hdfs_handle->cksm_root);
480483
size_t path_len = strlen(pathname);
@@ -599,8 +602,9 @@ globus_result_t hdfs_get_checksum_internal(hdfs_handle_t *hdfs_handle, const cha
599602
globus_gfs_log_message(GLOBUS_GFS_LOG_INFO, "Got checksum (%s:%s) for %s.\n", requested_cksm, *cksm_value, filename);
600603
}
601604

602-
if (hdfs_handle->pathname) {
605+
if (allocated_pathname && hdfs_handle->pathname) {
603606
free(hdfs_handle->pathname);
607+
hdfs_handle->pathname = NULL;
604608
}
605609
free(cksm);
606610
free(buffer);

0 commit comments

Comments
 (0)