As part of our CI build, the ant script that builds the client side (flex 4) projects also runs a set of FlexUnit4 tests on the deployed project. Most of the tests work but a few fail with this error
Error #2046: The loaded file did not have a valid signature.
The build machine is running Ununtu 10.10 with Firefox 3.6 and Flashplayer 10.2. If I run the exact same set of tasks, accessed from the same URL in windows everything passes with no problem. After some searching I did run across this thread: http://forums.adobe.com/message/2747415#2747415 but when I went looking for the libflashsupport.so file mentioned, the Ubuntu docs seemed to indicate that it was no longer needed.
I'm at my wits end here. Is libflashsupport.so actually needed in Ubuntu 10.10 and if so where would I find it? If not does anyone know of another issue that could be responsible for this?
I wish it was that easy, but no my system clock is set correctly. Even if it wasn't I don't think that would be an issue here since I'm using the actualy release build, not a beta or nightly with an expiration date.
Anyone? I really need to get this worked out soon. I'm currently looking at the dump-config output to see if something isn't set correctly in my ant build but I'm flying blind right now. Even a place to start looking would help.
On the Windows machine where the RSLs loaded, did you first clear the Flash Player cache and the browser cache to make sure you are really loading the RSLs?
I would also clear the caches on the Ubuntu machine for the same reason.
Something else I noticed. The error message was indicating that it was trying to load the swz file from the same directory as the module being tested which would fail since no such file exists in that directory. I created a custom version of flex-config.xml that looks for the swz in the frameworks/rsls directory instead and updated my ant build to load that as the config instead.
Nothing... It still gives the same error, just with a different path to the offending .swz. This raises the question
A) why is it failing to load the swc from the default url defined in the config file (http://fpdownload.adobe.com/pub/swz/flex/126.96.36.19976/framework_188.8.131.52 6076.swz) and
B) When it does fail, why isn't it able to load the swz from the local directory the second rsl-url points to?
We did some testing and could not reproduce the problem. We tried with Flex 4.1 and Flex 4.5 with this configuration:
Ubuntu 10.04 (VMware)
Flash Player 10,2,159,1
If you tried to load a signed RSL that does not exist, you should not get an invalid signature error. You should get an Error #2032: Stream Error. This tells me the Flash Player cache was not cleared.
A. Does a browser tool such as Charles show the RSL is actually downloaded from the server?
B. Security errors stop the load process.
I installed charles, but I'm not sure what exactly to look for in that mountian of output. If the download of the rsls from adobe is working correctly is there a particula GET or POST I should be seeing?
Try using Settings Manager (http://www.macromedia.com/support/documentation/en/flashplayer/help/se ttings_manager03.html) to clear your Flash Player cache. The steps are:
1. Uncheck "Store common Flash components to reduce download times."
2. Press "Confirm".
3. Reselect the "Store..." checkbox.
Next clear the browser cache.
When you run you app again you should see the RSL downloaded from fpdownload.adobe.com.
If I go into the actual folder on my linux machine and clear out the cache that way, it will load the rsls the next time I run my test. The problem is, it only works once. The next time I go to run those rsls will be cached and I'll get errors again. Having to maually clear that cache every time isn't going to be an option for a production build machine.
So it seems you can load the signed RSLs but are not able to use them once they are cached. Can you try running the application with Flash Player 10.1 to see if that makes a difference?
We are not aware of a problem on Ubuntu where swz files are loaded correctly into the Flash Player cache and then later Error #2046 is thrown when trying to use the cached files. Would you please write a bug with the details of your configuration and a simple app that reproduces the issue (include the swf files as well). Bugs may be logged here: http://bugs.adobe.com/flex/. Please include the four parts of the Flash Player version as that may be interesting and post a link to the bug back here for reference.
I'll try, but I'm not sure I'll be able to reproduce this in another project since I still have no idea what exactly causes the failure. In the mean time I've managed to work around the problem by copying the framework rsl swfs into the deployement directory and using them as fallbacks.
Thanks for all the help so far. If I manage to make any further progress I'll post it here.
I have the same issue, Ubuntu 10.10, flashplayer 10.3rc1
mxmlc SimplePrj.mxml -debug=true -benchmark=true --target-player=10 -output ../deploy/SimplePrj.swf
Loading configuration file /home/.../flex-config.xml
Initial setup: 79ms
start loading swcs 9ms Running Total: 88ms
Loaded 34 SWCs: 740ms
http://fpdownload.adobe.com/pub/swz/flex/184.108.40.20667/framework_220.127.116.11 0967.swz with 1 failover.
http://fpdownload.adobe.com/pub/swz/tlf/18.104.22.168/textLayout_22.214.171.124 .swz with 1 failover.
http://fpdownload.adobe.com/pub/swz/flex/126.96.36.19967/spark_188.8.131.5267 .swz with 1 failover.
http://fpdownload.adobe.com/pub/swz/flex/184.108.40.20667/sparkskins_4.5.0. 20967.swz with 1 failover.
http://fpdownload.adobe.com/pub/swz/flex/220.127.116.1167/mx_18.104.22.16867.sw z with 1 failover.
Files: 540 Time: 3380ms
SWF Encoding... 18ms
/.../SimplePrj/deploy/SimplePrj.swf (80059 bytes)
Total time: 4259ms
Peak memory usage: 81 MB (Heap: 62, Non-Heap: 19)
I had to copy the swz to deploy folder since failovers are not yet available.
* accessing from windows machines it loads swz without complaints.
clearing the player cache did not the trick.
I know flexSDK has one set of rsls, but I'm used to merge flex/air SDKs as they update. I also have some custom utility to ease compilation in /bin folder and docs/info folders.
So, I had to keep only the newest set of swz in /frameworks/libs/rsls folder.
I'm confused as well.
Are you using the default RSL configuration or have you modified it?
If you are using the default RSL configuration, then your failover RSLs should be SWZ files located in the same directory as the loading application.
If your RSLs are cached in the Flash Player cache then there will be no need for a failover because the SWZ file will come directly out of the cache.
Could you post either the output from the debugger console or the Flash Player log when you run your application? Flex will output messages that will tell you when it was unable to load an RSL and when it is failing over to another RSL.
It sounds like he's seeing the same thing I did. For some reason in Ubuntu it's detecting the cached versions of the framework rsls so they don't get downloaded from the website, but when it actually goes to access those cached files something is breaking.
I've done some further tests, always clearing player cache before.
So, having empty cache, using default flex-config.xml it always look and load swz from Adobe site, ignoring local.
I think it's the default behaviour.
Trace has no meaningful infos since it loads with no error.
Anyways, further loadings come from cache, only one request to Adobe fpdownload crossdomain.xml
yes it seems so.
works on my ubuntu box 10.10 and 11.04 notebook.
I'll try to understand the way of using local swz, getting rid of Adobe site availability.
If you find some helpful/practical infos, please post references, those on help.adobe are quite weak, thanx.
I have nothing against that way, but til yesterday they weren't available, so I spent many hours for nothing.
Ohter issues are relevant to online/offline development, using SDK nightly builds and so on.
I know I can "resolve" with
but it spit out cumbersome swf, specially on -debug=true and modules.
Yes, RSLs are not posted for nightly builds. If SWZ files are not available for a build you can always deploy unsigned RSLs (swfs) with your application and it will still work (the default RSL configuration is to failover to RSLs in the same directory as the application). To see the default RSL configuration take a look at the "runtime-shared-library-path" elements in flex-config.xml.