Flash player 9 beta for Linux is out
Finally, there's a new release of Flash on Linux, using more modern APIs - e.g. alsa instead of opening /dev/dsp directly. I was waiting for it, since from this blog (belonging to Mike Melanson, an Adobe developer) it seemed like it was going to release soon.
However, I was a bit scared when Mike came up on the automake list to ask about how to statically link libstdc++. Why scary? Well, it became scary after Ralf Wildenhues's answer - especially the last part. After reading that mail (and trying the test program after a few days) I remembered about Ulrich Drepper's DSO Howto, especially the section about symbol resolution, and the peculiarities of ELF. I won't go too deep into that, but the bottom line is: even if statically linking in libstdc++.so.6, the system could still resolve the relocations with symbols from libstdc++.so.5, if it was loaded beforehand. Also, subsequent plugins loaded by, say, firefox, and linked with version 5 might end up using symbols from version 6 from the Flash plugin (unless the library was linked with -Bsymbolic). Of course, looks like something hard to reproduce, but that might cause random crashes, as I pointed out in that thread.
Oh well. There are other scary parts - the way they use the alsa libraries (dlopening libasound.so?? whatever happened to dynamic linking?), for example. That's the problem with third party developers - most of the time they don't know how to use a platform's development tools right.
So, I downloaded the two versions (standalone and plugin), and indeed, libstdc++ seems to be statically linked in. Oh gosh. Damn, I hate these half-working solutions - it works until proven differently, or until some corner case comes in. Why can't people try to come up with correct solutions, instead of hacks? Well, not that Linux makes compatibility particularly easy :).
They don't even support that many distros, RHEL 3 and 4, SuSE 9.x and 10.1 (no 10.0?). Oops, wait no Ubuntu? Apparently not :(.
Well, it ain't that bad. There are a few browser hangs, one which seems to be always reproducible. The sound and video are almost synchronized, but I guess that's also a problem on Winbloze. No crashes yet, but I'm on Ubuntu, which has mostly stuff linked with libstdc++.so.6. My SuSE 9.1 at work seems more appropriate for triggering bugs.
One thing which got me really confused was that about:plugins would still list version 7.0.68 of the 'Shockwave Flash' plugin, besides the beta 9 version. Thankfully, I looked for 'plugin' in about:config and came up with plugin.expose_full_path, an option which makes 'about:plugins' show the full path to plugin files. Lo and behold:
File name: /home/fane/packages/flash-player-plugin-9.0.21.55/libflashplayer.so
Shockwave Flash 7.0 r68
And then at the end of the list:
File name: /home/fane/packages/flash-player-plugin-9.0.21.55/libflashplayer.so
Shockwave Flash 9.0 d55
Why they make both versions visible is beyond me. Oh well...
