Skip to content

Commit

Permalink
Fix attaching debugger (#3139)
Browse files Browse the repository at this point in the history
* Fix attaching debugger
* Fix deadlock on attach

Co-authored-by: wargio <[email protected]>
  • Loading branch information
XVilka and wargio committed Feb 22, 2023
1 parent ef0d69b commit c0f260c
Showing 1 changed file with 21 additions and 11 deletions.
32 changes: 21 additions & 11 deletions src/core/Cutter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2075,16 +2075,23 @@ void CutterCore::attachDebug(int pid)
offsetPriorDebugging = getOffset();
}

CORE_LOCK();
setConfig("cfg.debug", true);
auto uri = rz_str_newf("dbg://%d", pid);
if (currentlyOpenFile.isEmpty()) {
rz_core_file_open_load(core, uri, 0, RZ_PERM_R, false);
} else {
rz_core_file_reopen_remote_debug(core, uri, 0);
if (!asyncTask(
[&](RzCore *core) {
// cannot use setConfig because core is
// already locked, which causes a deadlock
rz_config_set_b(core->config, "cfg.debug", true);
auto uri = rz_str_newf("dbg://%d", pid);
if (currentlyOpenFile.isEmpty()) {
rz_core_file_open_load(core, uri, 0, RZ_PERM_R, false);
} else {
rz_core_file_reopen_remote_debug(core, uri, 0);
}
free(uri);
return nullptr;
},
debugTask)) {
return;
}
free(uri);

emit debugTaskStateChanged();

connect(debugTask.data(), &RizinTask::finished, this, [this, pid]() {
Expand Down Expand Up @@ -2144,7 +2151,10 @@ void CutterCore::stopDebug()
rz_core_analysis_esil_trace_stop(core);
currentlyEmulating = false;
} else {
rz_core_debug_process_close(core);
// ensure we have opened a file.
if (core->io->desc) {
rz_core_debug_process_close(core);
}
currentlyAttachedToPID = -1;
}

Expand Down Expand Up @@ -4579,4 +4589,4 @@ void CutterCore::writeGraphvizGraphToFile(QString path, QString format, RzCoreGr
qWarning() << "Cannot get graph at " << RzAddressString(address);
}
}
}
}

0 comments on commit c0f260c

Please sign in to comment.