Closed Bug 218671 Opened 21 years ago Closed 21 years ago

If ipcThreadInit fails to create ipcThread then ipcTrans and ipcMonitor will leak

Categories

(Core :: IPC, defect)

x86
Windows 2000
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: timeless, Assigned: timeless)

References

()

Details

(Keywords: memory-leak)

Attachments

(1 file)

static PRStatus ipcThreadInit(ipcTransport *transport) { ... NS_ADDREF(ipcTrans = transport); // <- can leak ipcShutdown = PR_FALSE; ipcMonitor = PR_NewMonitor(); // <- can leak if (!ipcMonitor) return PR_FAILURE; // <- leaks ipcTrans // spawn message thread ipcThread = PR_CreateThread(PR_USER_THREAD, ipcThreadFunc, NULL, PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, PR_JOINABLE_THREAD, 0); if (!ipcThread) { NS_WARNING("thread creation failed"); return PR_FAILURE; // <- leaks ipcTrans and ipcMonitor } ... ipcTransport::Disconnect() { mHaveConnection = PR_FALSE; if (ipcThread) // <- guard which is only reached // after both assignments and an additional alloc ipcThreadShutdown(); ... static PRStatus ipcThreadShutdown() { if (PR_AtomicSet(&ipcShutdown, PR_TRUE) == PR_FALSE) { LOG(("posting IPC_WM_SHUTDOWN message\n")); PostMessage(ipcLocalHwnd, IPC_WM_SHUTDOWN, 0, 0); } LOG(("joining w/ message thread...\n")); PR_JoinThread(ipcThread); ipcThread = NULL; // // ok, now the message thread is dead // PR_DestroyMonitor(ipcMonitor); // <- unreachable release unless ipcThread ipcMonitor = NULL; NS_RELEASE(ipcTrans); // <- unreachable release unless ipcThread and ipcMonitor
Attachment #131094 - Flags: superreview?(darin)
Attachment #131094 - Flags: review?(darin)
Comment on attachment 131094 [details] [diff] [review] try to avoid leaking looks right, thanks timeless. r+sr=darin
Attachment #131094 - Flags: superreview?(darin)
Attachment #131094 - Flags: superreview+
Attachment #131094 - Flags: review?(darin)
Attachment #131094 - Flags: review+
bonsai indicates i checked this in
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
QA Contact: carosendahl → ipc
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: