Wed 02 Mar 2011 10:13:20 AM UTC, comment #14:
I moved checking of the read-only flag from PropertyList (caller) to Property so that Property can allow transparent replacement of destructive properties. Test also added in actionscript.all.
|
Tue 01 Mar 2011 05:13:22 PM UTC, comment #13:
Replacing placeholders requires a faked function call, which isn't possible within Property::setFlags(), so replacing all placeholders in PropertyList::setFlagsAll() is not a good idea.
It leaves us with a) simply not aborting and failing to replace a placeholder, which will produce incompatible behaviour, or b) changing PropertyList and Property to handle placeholders differently.
|
Tue 01 Mar 2011 04:45:09 PM UTC, comment #12:
The problem is that PropertyList::setFlagsAll is called on _global, changing all properties, including placeholder functions, to read-only.
When the Boolean class (and various others) are used, they attempt to replace the placeholder functions, but this aborts because they are read-only.
Having special behaviour for placeholders (i.e. replacing a property, regardless of flags, and retaining those flags), may require changes to the way PropertyList::setValue() is used or even more extensive changes to the API.
Alternatively it may be possible to ensure that all placeholders are replaced when setFlagsAll is called. This is a more expensive operation, but may be less intrusive in the code.
The following code reproduces the crash:
ASSetPropFlags(_global, null, 4);
var b = new Boolean();
|
Mon 28 Feb 2011 05:48:30 PM UTC, comment #11:
Somehow a _global.Boolean property is being initialized twice.
This could be one of the problems with only loading classes on request: AS can change the environment so that the class initialization doesn't do what you expect, or as in this case causes an assertion failure. I'm not sure exactly how it's happening yet.
|
Mon 28 Feb 2011 04:03:22 PM UTC, comment #10:
The abort from comment #5 and comment #1 has returned.
|
Wed 03 Dec 2008 01:47:53 PM UTC, comment #9:
Your invocation works fine here.
Funny movie, btw :)
|
Wed 03 Dec 2008 12:42:47 PM UTC, comment #8:
I don't think it was ever a black screen for me. This is my invocation script:
/usr/local/bin/gtk-gnash -j 456 -k 361 -U 'http://www.sueddeutsche.de/kultur/516/396303/text/' -P 'align=middle' -P 'allowscriptaccess=sameDomain' -P 'bgcolor=#ffffff' -P 'flashvars=xl=http://pix.sueddeutsche.de/imperia/md/video/redaktion/2008/12/01/456x342-monty_sde.flv&be=www.sueddeutsche.de/kultur/artikel' -P 'height=361' -P 'name=sz-video' -P 'pluginspage=http://www.macromedia.com/go/getflashplayer' -P 'quality=high' -P 'src=/app/video/sz-videoXL_new.swf' -P 'type=application/x-shockwave-flash' -P 'width=456' http://www.sueddeutsche.de/app/video/sz-videoXL_new.swf $@ -vv
|
Wed 03 Dec 2008 12:32:59 PM UTC, comment #7:
Still a black screen here, with ffmpeg.
|
Wed 03 Dec 2008 12:05:16 PM UTC, comment #6:
The sueddeutsche.de site uses youtube embedded quite a bit now. Their own player, which is: http://www.sueddeutsche.de/kultur/516/396303/text, has also started working (possibly a NetConnection event bug, as I don't think it worked after the XML parsing fix).
spiegel.de uses SWF9 and AVM2, so there's not much point in keeping the bug open for that. I'll add it to the list of video sites not working, and it will have to wait until avm2 is implemented.
So please test the Süddeutsche pages, and I'll close this bug if there are no failing videos.
|
Wed 07 May 2008 10:00:46 AM UTC, comment #5:
Abort fixed, downgrading severity (and the video doesn't work).
|
Wed 07 May 2008 09:04:19 AM UTC, comment #4:
I committed a fix not considering the flags
for destructive getters set by internal calls
(still considering them for attempt to set from actionscript).
Fixes the abort, didn't really test the video, if you confirm
I'd put this back to normal severity.
|
Tue 06 May 2008 10:10:18 AM UTC, comment #3:
Another possible fix would be not considering the flags,
since destructive getters are for INTERNAL USE ONLY.
In that case we'd keep the flags as initialized and change
as they change from user input, finally copying
the flags to the property when initialized by the
trigger.
It's a bit confusing that the current use of those destructive
triggers is to call init_member so we go trought reinitialization
of them... a cleaner design would have the triggers return
an as_value directly, similarly to the ones I used
for the flash package (less overhead too, and less things for
the GC to manage).
|
Tue 06 May 2008 09:24:28 AM UTC, comment #2:
Alright, it seems the problem is that
the declarative class (destructive getter)
is set to read-only mode from actionscript code.
Testcase:
ASSetPropFlags(_global, "System", 4, 0); // read-only
trace(System);
I guess the proper fix would be having the ASSetPropFlags
call above trigger the destructive getter....
Most likely there are other cases of "access" to
property that don't trigger actual initialization.
|
Mon 05 May 2008 09:47:38 PM UTC, comment #1:
spiegel.de aborts:
http://www.spiegel.de/static/flash/flashvideo/180-all-010.swf
47473808387600] 23:44:43 ERROR: Property ContextMenu is read-only, not setting it to [type Function]
47473808387600] 23:44:43 ERROR: Attempt to initialize read-only property ``ContextMenu'' on object ``0x9b3da0'' twice
#2 0x00002b2d500316b7 in gnash::as_object::init_member (this=0x9b3da0,
key=132, val=@0x7fff5b1bde80, flags=<value optimized out>, nsname=0,
order=<value optimized out>) at as_object.cpp:741
#3 0x00002b2d50107530 in gnash::ContextMenu::registerConstructor (
global=@0x9b3da0) at ContextMenu.cpp:179
#4 0x00002b2d50101803 in operator() (this=0x9c4830) at ClassHierarchy.cpp:163
#5 0x00002b2d5001410a in gnash::GetterSetter::UserDefinedGetterSetter::get (
this=0x9c4b68, fn=@0x6) at Property.cpp:124
#6 0x00002b2d5001567f in gnash::Property::getDelayedValue (this=0x9c4b50,
this_ptr=@0x9b3da0) at Property.h:64
#7 0x00002b2d50015bb5 in gnash::Property::getValue (this=0x5bdb,
this_ptr=@0x6) at Property.cpp:151
#8 0x00002b2d50031371 in gnash::as_object::get_member_default (this=0x9b3da0,
name=<value optimized out>, val=0x7fff5b1be2b0,
nsname=<value optimized out>) at as_object.cpp:223
#9 0x00002b2d5002a859 in gnash::as_object::get_member (this=0x5bdb,
name=23515, val=0x6, nsname=18446744073709551615)
at ../../server/as_object.h:660
#10 0x00002b2d50025c48 in gnash::as_environment::get_variable_raw (
this=0x9d4a18, varname=@0x7fff5b1be4a0, scopeStack=@0x7fff5b1be998,
retTarget=0x0) at as_environment.cpp:206
|
Fri 02 May 2008 01:35:00 PM UTC, original submission:
Spiegel and Süddeutsche Zeitung are large and well known german print media which publish their content on their publicly accessible web sites. Both offer video content in flash movie format on their sites, which is not played back by Gnash.
Links:
http://www.spiegel.de/
--> "Video / Nachrichten" on the right hand side of the page.
http://www.sueddeutsche.de/
--> "Videos" halfway down the page.
Tested with Konqueror from KDE 3.5.9 and Firefox (Iceweasel) 2.0.0.14-2 on a Debian / Lenny based system, Kernel 2.6.24-1-amd64. The Gnash package is from the Debian repository, version is reported as 0.8.2-1.
To make sure Gnash is working I checked with YouTube, the videos are played, although it takes a page reload sometimes to get a video played.
|