Closed Bug 808720 Opened 12 years ago Closed 12 years ago

stub installer ping is not consistent

Categories

(Firefox :: Installer, defect)

19 Branch
x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED
Tracking Status
firefox17 --- unaffected
firefox18 --- verified
firefox19 --- verified

People

(Reporter: jbecerra, Assigned: bbondy)

References

Details

Attachments

(2 files)

While trying to verify bug 808110 I found that the stub installer ping doesn't happen all the time. So far I have only seen it once. In order to do this I downloaded the latest (11/5) stub installer from the latest-mozilla-central directory and ran it while using Fiddler with the https-capture option on.

So far I have ran this around 10 times and only once did I get the ping pointing to download-stats. I've also tried the latest aurora stub installer with similar results.

We should be seeing this ping every time we install Firefox using the stub installer, but so far that's not the case.
Might be bug 808153? Assigning to bbondy assuming that this isn't just a download issue.
Assignee: nobody → netzen
I'm on a B2G task today and possibly tomorrow.  Did we find out if this was related to bug 808153 yet?
I finished the B2G task I was working on last night and am available to work on this, but will put it on hold until I hear confirmation on if it is related to bug 808153 or not.
Status: NEW → UNCONFIRMED
Ever confirmed: false
Flags: needinfo?(jbecerra)
(In reply to Brian R. Bondy [:bbondy] from comment #3)
> I finished the B2G task I was working on last night and am available to work
> on this, but will put it on hold until I hear confirmation on if it is
> related to bug 808153 or not.

Brian, can you please tell us how often the ping is? For example is the ping on Firefox startup or based on the number of hours you have the browser running?

I tested this today and I also could not see the ping
The ping happens during the install performed by the stub installer and does not involve Firefox.
(In reply to Robert Strong [:rstrong] (vac 10/26-11/4) (do not email) from comment #5)
> The ping happens during the install performed by the stub installer and does
> not involve Firefox.

Thanks rstrong. I'll check again and update
Jakem and I tried the install process several times  whiles Jakem checked the server logs for our IP. He couldn't find any of our IPs after several attempts.
I was installing using the SI linked to here: https://nightly.mozilla.org/. Specifically:

http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-19.0a1.en-US.win32.installer-stub.exe

From the directory listing:
firefox-19.0a1.en-US.win32.installer-stub.exe	06-Nov-2012 06:17 	614K

No pings received from either my IP or :retornam's during testing, at any point in the download/install process, even after SI completed and exited. I confirmed the "send metrics" checkbox under "Options" was checked.
This is consistent to what I have been seeing yesterday and today, which is why I asked for more eyeballs to look into this.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Flags: needinfo?(jbecerra)
bbondy/rstrong - please connect with Juan if you're unable to repro the issue. Goal should be to resolve for today, since this is blocking deployment to Beta/Release and data collection.
OK I started looking into this and I know what's going on.

I can reproduce the ping only sometimes being sent.  I can reproduce it both with the downloaded builds and my local builds.

If I throw up a MessageBox after I send the ping, the ping is always sent 100% of the time.

So what I think is happening is that sometimes the program closes before the HTTP request gets sent out.  

Working on a patch now.
So the bug was in the NSIS plugin InetBgDL.

The bug happens because this ping is sent just before the program closes.
That's the reason why we didn't see this bug from the other uses of InetBgDL.

The problem was that the transfer lock is sometimes acquired 
in the Reset() call before the thread that is started from 
Get() gets to acquire the lock.

The bug fix is documented in the patch, but basically what is happening is that there is a lock and we acquire that lock in a thread we spawn from an HTTP get call. But also we acquire that lock when the program shuts down in a Reset() function call. If the Reset() function call gets the lock before the HTTP get then the ping is not sent.

To fix the problem we ensure that we always acquire the lock in the HTTP get thread that is spawned first.
Attachment #679349 - Flags: review?(jmathies)
Attachment #679349 - Attachment description: Patch v1. → Patch v1 - consistent pings being sent impl
Comment on attachment 679349 [details] [diff] [review]
Patch v1 - consistent pings being sent impl

Makes sense from my limited understanding of this plugin. After a thread is spawned and if Reset gets called and the thread's g_hGETStartedEvent is valid, Reset waits until the thread sets g_hGETStartedEvent?

If that's right then that's what I see this coding doing, correctly! :)
Attachment #679349 - Flags: review?(jmathies) → review+
Attachment #679351 - Flags: review?(jmathies) → review+
(In reply to Jim Mathies [:jimm] from comment #14)
> Comment on attachment 679349 [details] [diff] [review]
> Patch v1 - consistent pings being sent impl
> 
> Makes sense from my limited understanding of this plugin. After a thread is
> spawned and if Reset gets called and the thread's g_hGETStartedEvent is
> valid, Reset waits until the thread sets g_hGETStartedEvent?
> 
> If that's right then that's what I see this coding doing, correctly! :)

Thanks for the quick review.
Yup that is correct, and since g_hGETStartedEvent is created before we even attempt to create the thread, we know that it will wait on the Reset call if there is a pending GET.
Comment on attachment 679351 [details] [diff] [review]
Patch v1 - New DLL compiled with MSVC6 for smaller size

[Approval Request Comment]
Bug caused by (feature/regressing bug #): Original ping submission bug, bug 802734
User impact if declined: Pings will not always be sent 
Testing completed (on m-c, etc.): no, but tested locally and a try run is currently running.
Risk to taking this patch (and alternatives if risky): Low since it'll be QA'ed 
String or UUID changes made by this patch: none
Attachment #679351 - Flags: approval-mozilla-aurora?
Comment on attachment 679349 [details] [diff] [review]
Patch v1 - consistent pings being sent impl

[Approval Request Comment]
Ditto Comment 16
Attachment #679349 - Flags: approval-mozilla-aurora?
Attachment #679349 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Attachment #679351 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
I've verified that the ping now happens all the time when you complete the installation using the stub installer (Nightly and Aurora) with default options, and that there is no ping when you disable the option to send the information about the installation. The pings look like:

GET /stub/v1/nightly/en-US/0/2/12/19905/1/0/ HTTP/1.1
User-Agent: NSIS InetBgDL (Mozilla)
Host: download-stats.mozilla.org

GET /stub/v1/aurora/en-US/0/2/12/20452/1/0/ HTTP/1.1
User-Agent: NSIS InetBgDL (Mozilla)
Host: download-stats.mozilla.org

Thanks Brian!
I also see the pings now. Thanks Brian!
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: