I disassembled the swf using swftools-0.4.2 swfdump and it does
seem to be
confused at that tag judging by the '???' it is emitting.
[01a] 381 PLACEOBJECT2 places id 0005 at depth 0002 name
"frameupdate"
global flags: 00f0
flags 00000040 [key down], 84 bytes actioncode
( 38 bytes) action: Constantpool(5 entries)
String:"gotKeyDown" String:"getCode" String:"LzKeys" String:"_root"
String:"Key"
( 7 bytes) action: Push int:0 Lookup:4 ("Key")
( 0 bytes) action: GetVariable
( 2 bytes) action: Push Lookup:1 ("getCode")
( 0 bytes) action: CallMethod
( 7 bytes) action: Push int:1 Lookup:3 ("_root")
( 0 bytes) action: GetVariable
( 2 bytes) action: Push Lookup:2 ("LzKeys")
( 0 bytes) action: GetMember
( 2 bytes) action: Push Lookup:0 ("gotKeyDown")
( 0 bytes) action: CallMethod
( 0 bytes) action: Pop
( 0 bytes) action: End
flags 00008000 [???], 20992 bytes actioncode
( 0 bytes) action: End
flags 05002488 [mouse move][key up][???],
1953457920 bytes
actioncode
( 0 bytes) action: ToString
( 0 bytes) action: BitURShift
( 0 bytes) action: unknown[79]
( 0 bytes) action: GetMembers?
( 0 bytes) action: unknown[70]
( 0 bytes) action: End
flags 43746567 [on load][enter frame][unload][mouse
up][key
down][data][???], 6644847 bytes actioncode
( 0 bytes) action: PushDuplicate
( 0 bytes) action: unknown[7a]
( 0 bytes) action: ToString
( 0 bytes) action: BitURShift
( 0 bytes) action: unknown[79]
( 0 bytes) action: unknown[73]
( 0 bytes) action: End
flags 6f6f725f [on load][enter frame][unload][mouse
move][mouse down][key down][???], 1699414132 bytes actioncode
( 0 bytes) action: unknown[79]
( 0 bytes) action: End
flags 07000796 [enter frame][unload][mouse down][key
up][data][???], 0 bytes actioncode
( 0 bytes) action: ToggleQuality
( 0 bytes) action: NextFrame
( 0 bytes) action: GetVariable
( 2 bytes) action: Push Lookup:1
( 0 bytes) action: CallMethod
( 7 bytes) action: Push int:1 Lookup:3
( 0 bytes) action: GetVariable
( 2 bytes) action: Push Lookup:2
( 0 bytes) action: GetMember
( 2 bytes) action: Push Lookup:0
( 0 bytes) action: CallMethod
( 0 bytes) action: Pop
( 0 bytes) action: End
flags 00001000 [???], 20224 bytes actioncode
( 0 bytes) action: End
flags 04003088 [mouse move][key up][???],
1299860480 bytes
actioncode
( 0 bytes) action: unknown[6f]
( 0 bytes) action: BitRShift
( 0 bytes) action: BitURShift
( 0 bytes) action: StackSwap
( 0 bytes) action: BitOr
( 0 bytes) action: unknown[6e]
( 0 bytes) action: BitOr
( 0 bytes) action: Less3?
( 0 bytes) action: BitURShift
( 0 bytes) action: unknown[72]
( 0 bytes) action: End
flags 4d776172 [enter frame][mouse down][mouse up][key
down][data][???], 1702065519 bytes actioncode
( 0 bytes) action: TargetPath
( 0 bytes) action: unknown[76]
( 0 bytes) action: BitURShift
( 0 bytes) action: unknown[6e]
( 0 bytes) action: unknown[74]
( 0 bytes) action: End
flags 6f6d6e6f [on load][enter frame][unload][mouse
move][mouse up][key down][???], 1684370293 bytes actioncode
( 0 bytes) action: unknown[6f]
( 0 bytes) action: unknown[77]
( 0 bytes) action: unknown[6e]
( 0 bytes) action: End
flags 6f6f725f [on load][enter frame][unload][mouse
move][mouse down][key down][???], 160825460 bytes actioncode
( 0 bytes) action: End
flags 01070208 [mouse move][???], 134217728 bytes
actioncode
( 0 bytes) action: unknown[03]
( 0 bytes) action: GetVariable
( 2 bytes) action: Push Lookup:0
( 0 bytes) action: GetMember
( 2 bytes) action: Push Lookup:1
( 0 bytes) action: CallMethod
( 0 bytes) action: Pop
( 0 bytes) action: End
flags 00002000 [???], 19712 bytes actioncode
( 0 bytes) action: End
flags 04002e88 [mouse move][key up][???],
1299860480 bytes
actioncode
( 0 bytes) action: unknown[6f]
( 0 bytes) action: BitRShift
( 0 bytes) action: BitURShift
( 0 bytes) action: StackSwap
( 0 bytes) action: BitOr
( 0 bytes) action: unknown[6e]
( 0 bytes) action: BitOr
( 0 bytes) action: Less3?
( 0 bytes) action: BitURShift
( 0 bytes) action: unknown[72]
( 0 bytes) action: End
flags 4d776172 [enter frame][mouse down][mouse up][key
down][data][???], 1702065519 bytes actioncode
( 0 bytes) action: TargetPath
( 0 bytes) action: unknown[76]
( 0 bytes) action: BitURShift
( 0 bytes) action: unknown[6e]
( 0 bytes) action: unknown[74]
( 0 bytes) action: End
flags 6f6d6e6f [on load][enter frame][unload][mouse
move][mouse up][key down][???], 1969582965 bytes actioncode
( 0 bytes) action: unknown[70]
( 0 bytes) action: End
flags 6f6f725f [on load][enter frame][unload][mouse
move][mouse down][key down][???], 160825460 bytes actioncode
( 0 bytes) action: End
flags 01070208 [mouse move][???], 134217728 bytes
actioncode
( 0 bytes) action: unknown[03]
( 0 bytes) action: GetVariable
( 2 bytes) action: Push Lookup:0
( 0 bytes) action: GetMember
( 2 bytes) action: Push Lookup:1
( 0 bytes) action: CallMethod
( 0 bytes) action: Pop
( 0 bytes) action: End
[027] 4 DEFINESPRITE defines id 0006
[000] 0 END
On 2/14/07, strk <address@hidden> wrote:
On Wed, Feb 14, 2007 at 01:30:12PM -0500, Henry Minsky wrote:
> The structure of a Laszlo application is that the runtime LFC
library is
> compiled entirely by the script compiler, it is just a big
action block.
>
> Then, the user's application is also compiled by the script
compiler
into a
> big action block.
>
> Then those are inserted into a kind of boilerplate framework
which is
> generated using the old JGenerator library which we've modified
somewhat.
> That is generated by the source code in
> WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFFile.java, and
consists of
> various resources and trampolines into the LFC, such as buttons for
catching
> click events, keyboard events, and a video object which can be
attached
to
> play video.
>
> The question I have is whether the bad opcode is coming from our
script
> compiler, or whether it comes in somehow when the app is
assembled by
> placing the compiled script code into the application framework.
The Gnash-detected error is in a PLACEOBJECT2 tag events . You can
also
see tha name of the instanciated character (frameupdate) :
SWF[444]: tag type = 26, tag length = 381
place_object_2
depth = 2
char id = 5
name = frameupdate
actions: flags = 0xF0
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 84, but
read
83. Skipping excessive bytes.
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 82, but
read
81. Skipping excessive bytes.
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 79, but
read
78. Skipping excessive bytes.
20:15:11: MALFORMED SWF: swf_event::read(), event_length = 77, but
read
76. Skipping excessive bytes.
I'm both interested in making sure Gnash is fail-safe against this
malformation
(the proprietary player is) and improve Gnash support for the
ActionScript
part, which
is also unsupported currently.
The ActionScript failure is about a 'prototype' member being
undefined
(namely: prototype.prototype).
--strk;
--
Henry Minsky
Software Architect
address@hidden