Fix #8709.
- The buffer that the debugger used to retrieve messages from the debug port was slightly too small for the largest of the message data structs (currently 1100 bytes), causing some types of debug events to get truncated. This resulted in image creation/deletion events being received with a truncated image_info struct, which would result in several fields being returned with random values, most notably the text/data base and size fields. Consequently, searching those images for an address within them would fail, leading to #8709. It's possible but not yet confirmed that this bug is also responsible for #8710, need to test further.
This commit is contained in:
parent
36c85ca8df
commit
3691496222
@ -312,7 +312,7 @@ status_t
|
||||
DebuggerInterface::GetNextDebugEvent(DebugEvent*& _event)
|
||||
{
|
||||
while (true) {
|
||||
char buffer[1024];
|
||||
char buffer[2048];
|
||||
int32 messageCode;
|
||||
ssize_t size = read_port(fDebuggerPort, &messageCode, buffer,
|
||||
sizeof(buffer));
|
||||
@ -324,7 +324,7 @@ DebuggerInterface::GetNextDebugEvent(DebugEvent*& _event)
|
||||
}
|
||||
|
||||
if (messageCode <= B_DEBUGGER_MESSAGE_HANDED_OVER) {
|
||||
debug_debugger_message_data message;
|
||||
debug_debugger_message_data message;
|
||||
memcpy(&message, buffer, size);
|
||||
if (message.origin.team != fTeamID)
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user