Closed
Bug 442770
Opened 17 years ago
Closed 15 years ago
Infinite recursion calling hasOwnProperty()
Categories
(Tamarin Graveyard :: Virtual Machine, defect, P2)
Tracking
(Not tracked)
VERIFIED
WORKSFORME
flash10.1
People
(Reporter: cpeyer, Assigned: stejohns)
References
Details
(Keywords: flashplayer)
Attachments
(1 file)
4.89 KB,
application/x-zip-compressed
|
Details |
Transferred from player bugbase #232477:
Reproduction:
1. Unzip hasOwnProperty.zip.
2. Run proxyloader.swf
3. Click in the green rectangle that is labeled "test".
Actual Results:
Error: Error #1023: Stack overflow occurred.
at Object$/_hasOwnProperty()
at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty()
at Object$/_hasOwnProperty()
at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty()
at Object$/_hasOwnProperty()
at Object/http://adobe.com/AS3/2006/builtin::hasOwnProperty()
at Object$/_hasOwnProperty()
Expected Results:
I expect ProxyTest.getProperty() to be called (see below).
override flash_proxy function getProperty(name:*):*
{
trace("getProperty: name = " + name);
return "Hello";
}
Workaround:
Load the application into a child ApplicationDomain instead of a peer ApplicationDomain. You can see this works by modifying the below code in proxyloader.initialize():
...
var lc:LoaderContext = null;
lc = new LoaderContext(false, new ApplicationDomain());
thing6.load(new URLRequest("app.swf"), lc);
...
Comment out the second line that sets lc to a peer ApplicationDomain. With the line commented out lc will be null when passed into thing6.load.
Transferred Comments:
[dloverin 6/23/08] Entered Bug.
[dloverin 6/23/08] This bug was found while developing a Flex SDK feature. Please see bug https://bugs.adobe.com/jira/browse/SDK-15820.
[mai 6/23/08] Sending to QRB
[dloverin 6/23/08] Additional information about the bug.
I found this code in ProxyGlue.cpp to be part of the problem. When the infinite recursion happens “Binding b” is zero which seems to kick it off the recursion.
#define PROXY_CLASS() ((ProxyClass*)toplevel()->getPlayerClass(abcclass_flash_utils_Proxy))
…
Atom ProxyObject::getUintProperty(uint32 i) const
{
Atom argv[] = { atom(), core()->internUint32 (i)->atom() };
int argc = 1;
Binding b = PROXY_CLASS()->getProperty;
MethodEnv* method = vtable->methods[urshift(b,3)];
return method->coerceEnter(argc, argv);
}
[tedcasey 6/23/08] Chris, can you determine if there's a new bug that needs to be filed here, or if the current bug in JIRA just needs to be directed at the VM team? Thanks!
[dloverin 6/23/08] I can reproduce this every time using Player 9,0,115,0 and the provided swf. I'm running on Windows XP.
Updated•17 years ago
|
Summary: Infiinite recursion calling hasOwnProperty() → Infinite recursion calling hasOwnProperty()
Reporter | ||
Updated•17 years ago
|
Keywords: flashplayer
Reporter | ||
Comment 1•16 years ago
|
||
Verified issue still occurs in FP10r12
Flags: in-testsuite?
Flags: flashplayer-triage+
Flags: flashplayer-qrb?
Updated•16 years ago
|
Blocks: AS3_Builtins, 478870
Assignee: nobody → stejohns
Severity: normal → major
Priority: -- → P2
Assignee | ||
Comment 2•15 years ago
|
||
Not repeating for me in current Argo builds. Chris, can you double-check to see if it's repeating for you?
Reporter | ||
Comment 3•15 years ago
|
||
Verified worksforme Argo 10 1 50 333
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → WORKSFORME
Reporter | ||
Updated•15 years ago
|
Status: RESOLVED → VERIFIED
Reporter | ||
Comment 4•15 years ago
|
||
No vm testcase possible for ApplicationDomain.
Flags: in-testsuite? → in-testsuite-
Comment 5•15 years ago
|
||
Alternate workaround is to create a dummy instance of the Proxy class in the loading SWF.
var dummyProxy:Proxy = new Proxy();
You need to log in
before you can comment on or make changes to this bug.
Description
•