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: