script missing from debugger after connecting tools to existing app process

RESOLVED INVALID

Status

()

Firefox
Developer Tools: WebIDE
RESOLVED INVALID
3 years ago
8 months ago

People

(Reporter: myk, Unassigned)

Tracking

Trunk
x86
Mac OS X
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

3 years ago
When I push j2me.js <https://github.com/andreasgal/j2me.js> to a device and then connect to the app process using WebIDE, at least one script, mobileinfo.js, doesn't appear in the list of scripts in the Debugger tab.

The script does appear in the list of scripts in WebIDE, and it does get installed on the device.  It also appears in the Debugger's list if I press the Play button to reinstall the app while tools are still open.  It's only when I open tools after the app has already started that the script is missing.

I don't have a reduced test case, but here's how to reproduce on the app I'm using with WebIDE:

1. Get and build the app:

git clone https://github.com/andreasgal/j2me.js.git
cd j2me.js
make # requires Java SDK

2. Open Packaged App… in WebIDE;

3. Install and Run, then Debug App.
I can confirm this behavior when used together with the latest Simulator build (2.2.20140916).

Nick, any guess why the source would be missing entirely from the debugger source list until you reinstall the app again?
Flags: needinfo?(nfitzgerald)
(In reply to J. Ryan Stinnett [:jryans] from comment #1)
> I can confirm this behavior when used together with the latest Simulator
> build (2.2.20140916).
> 
> Nick, any guess why the source would be missing entirely from the debugger
> source list until you reinstall the app again?

It likely doesn't define any functions that stay alive until the debugger requests the source list because getting the list of sources is GC sensitive and if a source is collected before the debugger requests sources, then the debugger won't get it.

If this is indeed the issue, it is a dup of bug 944260.
Flags: needinfo?(nfitzgerald)
(Reporter)

Comment 3

3 years ago
mobileinfo.js doesn't define any functions that stay alive.  The only function it defines is an anonymous one that it invokes and then discards.  But it does define a global variable, mobileInfo, that stays alive for the duration of the app:

  var mobileInfo = (function() {
    …
  })();

Is that not sufficient to prevent the source from being collected?
Nick, any thoughts on comment 3?
Flags: needinfo?(nfitzgerald)
(In reply to Myk Melez [:myk] [@mykmelez] from comment #3)
> mobileinfo.js doesn't define any functions that stay alive.  The only
> function it defines is an anonymous one that it invokes and then discards. 
> But it does define a global variable, mobileInfo, that stays alive for the
> duration of the app:
> 
>   var mobileInfo = (function() {
>     …
>   })();
> 
> Is that not sufficient to prevent the source from being collected?

If the value is not a function, than no, it isn't enough to keep the source from getting collected. If the value isn't a function, than this is a dupe of bug 944260, and please mark it as such.
Flags: needinfo?(nfitzgerald)
Apps are being removed with B2G cleanup.
Status: NEW → RESOLVED
Last Resolved: 8 months ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.