Dead Zone

Stand alone.

Nightly: apz

2015-07-02 11:27:39 | 雑記

1106280 – Vertical scroll position is not saved when pressing back button
Backで元の位置に戻らない件ですが。
ひょっとして今日(昨日?)のbuildで解消されたような…
スクロール時埋め込みFlashがワンテンポ遅れてスクロールする気持ち悪い動作はどうもまだ直ってないようですが、確認用のページを探すのに苦労したくらいなので(HTML5Playerは問題なし)、しばらくapz有効のまま様子見。

[追記]
しかし…crashしやすいのであった(-_-)

 

コメント

E10s & uBlock (3) 終了

2015-06-29 20:09:48 | 雑記

E10s+uBlockで、Disable/Enableで挙動が変化する件。
observeの2重callが無くなるのは、
DisableでRemoteAddonsParent.jsmのObserverParent.removeObserverが呼び出されるから。Enableで復旧しないのはたぶんRemoteAddonsParent.jsmのObserverParent.addObserverが呼び出されないから。Debuggerの挙動が信用できないので「たぶん」ですが。
で、RemoteAddons〜が出てくるのはmultiprocessShimsが関係しているはずで、こいつはE10s非対応Addonのためのもの(?)のはずだからそもそもおかしいような気がする。
multiprocessで調べてみると、対応Addonはinstall.rdfにmultiprocessCompatible=trueが指定されているそうで、uBlockも確かにそうなっている。
さらに調べてみると...
1172888 – Preference 'extensions.bootstrappedAddons' not updated properly.
この項目はprefs.jsに保存されているのだがそれが正しくない、と。
確かに!(@_@)
prefs.jsの該当項目はfalseになってました。
about:configでtrueにしてから終了するとtrueで保存されるので、起動時の読み込みでfalseになってしまっているようです。
というわけで、
Nightly起動時にE10s非対応とみなされて必要の無いRemoteAddons〜が有効になってしまって動作がおかしくなり、
Disable/Enableすると不正なデータがリセットされてmultiprocessCompatible=trueとなり不要なモジュールはロードされず動作もおかしくならない。
ってことで。
原因は、
createAddonDetails
でmultiprocessCompatibleをセットしていないのに
callBootstrapMethod
を呼び出して
aAddon.multiprocessCompatible || false
で常にfalseになるよう仕組まれていたから。
ダメじゃん(-_-)

[7/1追記]
あ、「不要なモジュールはロードされず」は違うな。「不要なモジュールから妨害工作は受けず」かな。
1行パッチ。

diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.jsm b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -705,17 +705,18 @@ XPCOMUtils.defineLazyServiceGetter(this,
 function EM_R(aProperty) {
   return gRDF.GetResource(PREFIX_NS_EM + aProperty);
 }
 
 function createAddonDetails(id, aAddon) {
   return {
     id: id || aAddon.id,
     type: aAddon.type,
-    version: aAddon.version
+    version: aAddon.version,
+    multiprocessCompatible: aAddon.multiprocessCompatible
   };
 }
 
 /**
  * Converts an RDF literal, resource or integer into a string.
  *
  * @param  aLiteral
  *         The RDF object to convert

prefs.jsが正しく保存されていることとBrowser Consoleに〜XPCOM〜メッセージが出ないことを確認。prefs.jsを手編集してfalseにすれば不具合が再現することを確認。

でも当面は(bugfixされるのかどうかなので)、起動時にuBlockをDisable/Enableするextensionで問題回避する :-(

 

コメント

E10s & uBlock (2)

2015-06-27 07:59:02 | 雑記

Firefox Nightly + uBlock Origin の話なんですが。
だいぶ前に、Browser Consoleに妙なエラーメッセージが出てて。
1161418 – [e10s] uBlock Origin addon hits "TypeError: Date.now is not a function"
今、このメッセージは出ないんですが...
なんと...
uBlockのソースを見ると、exceptionをcatchしてメッセージを出さないようにコーディングされてました(-_-)
uBlock/frameModule.js at master · gorhill/uBlock · GitHub
>try {
>    lss(this.contentBaseURI + 'vapi-client.js', sandbox);
>    lss(this.contentBaseURI + 'contentscript-start.js', sandbox);
>} catch (ex) {
>    //console.exception(ex.msg, ex.stack);
>    return;
>}
で、"//"取ってconsole.exception(ex.message, ex.stack);にしてみると。
出ました"Date.now is not a function"。

前から思ってたんですが、Date.nowがfunctionじゃないとか発狂してるのにも関わらずuBlockはちゃんとお仕事している(=広告をブロックしている)のが激謎...

で、ソースをいじってトレースしてみたら...
どうもcontentObserver.observeが2度(というか2重に)呼び出されているようで...
1度はRemoteAddonsParentからCPOWを渡されていて、そいつから生成されたsandboxはDate.nowの無いイミフなブツで例外が発生して終了。ところがその後どこかから再度呼び出されていて、今度はCPOWではない通常のobjectを渡されているので普通のsandboxが生成されて(たぶん)その後の処理も正常にいっているらしく。ナンダコリャ
激謎...
Disable/Enable後はCPOW渡しの呼び出しはなくなります。
激謎...
uBlockは Services.obs.addObserverで"document-element-inserted"をobserveするよう登録していますが、どうもRemoteAddonsParentも"e10s-"を足して登録しているようで
mozilla-central mozilla/toolkit/components/addoncompat/RemoteAddonsParent.jsm
>Services.obs.addObserver(observer, "e10s-" + topic, ownsWeak);
そのせいで2重にobserveが呼び出されているような...

このあたり、何が正解なのか分からないので手の出しようもないんですが。なんだかE10sのバグ(?)を追及すると事態が悪化する(CPOW渡しだけになっちゃってuBlockが機能しなくなるとか)ような気がしてしょうがない...ブルブル

 

コメント

進展が無い...

2015-06-23 18:08:07 | 雑記

1171173 – After start, Disabling/Enabling uBlock considerably lowers page load times with E10s
ですが。
進展がありませんね(´・_・`)

Browser Consoleに大量の
>Sending message that cannot be cloned. Are you trying to send an XPCOM object?
が出る件については、こんなんがありまして。
1149896 – console reports "Sending message that cannot be cloned. Are you trying to send an XPCOM object?" as reading-list items are added.
これに倣ってublockのframeModule.jsを
205:            messageManager.sendRpcMessage(this.cpMessageName, JSON.stringify(details));
208:            messageManager.sendSyncMessage(this.cpMessageName, JSON.stringify(details));
に。vapi-background.jsを
1675:        var details = JSON.parse(e.data);
に変更すると、件のメッセージは出なくなりました。

が、パフォーマンスをチェックしてみると、とあるページで
修正なし:8.7秒 (5回reloadの平均)
修正あり:8.3秒
Disable/Enable後:7.0秒
ほとんど影響なし(^^;;
ホントにメッセージ抑止だけの効果しかないようで。
パフォーマンスを劣化させているのは本当はどこなのか・・・

 

コメント

間抜けな話

2015-06-15 16:53:13 | 雑記

つまらん話で恐縮ですが。

twitterのページを開いてスクロールすると...
プロフィールの画像がするっと小さいサイズに変わり、ナビゲーションバー(ツイート/フォロー/フォロワー等が表示されている部分)はスクロール領域から外れて固定表示になるわけですが。

ウチではそういう動作になるのがFirefox Nightly 41.0a1の或るプロファイル(e10s有効)だけでして。
IE11でもGoogle Chrome(43.0.2357.124)でもFirefox Beta 39.0でもFirefox Nightly 41.0a1のもう一つのプロファイル(e10s+apz有効)でも、プロフィール・ナビゲーションバーはスクロールアウトしてしまい、固定表示されるのは一番上の検索バーだけという状態になります。

なんでそうなるのか結構悩んだんですが、答は「ブラウザの表示サイズが狭いときは固定表示にはならない」でした(-_-) (ちなみにブラウザのウィンドウサイズはすべて縦768)
ブラウザウィンドウを拡げるとどのブラウザでもナビ・バーは固定表示になりました。そ、そんなことだったとは...(-_-;)
同じNightlyで動作するプロファイルと動作しないプロファイルがあるので、いったい何が違うのかと悩んだんですが、UIのカスタマイズは確かに違ってて、一方はほぼデフォルト(表示領域は小さい)、もう一方はCTR適用でタイトルバーも非表示(表示領域は大きい)。そこかよ! っていう...

ま、そういう落とし穴もあるってことで...
(というか、そういう所でつまずく奴もいるってことで...;_;)

 

コメント

よくわからんSVG favicon

2015-06-09 16:21:44 | 雑記

Firefoxでtwitterにアクセスすると初回だけfaviconが黒で表示され、2回目以降は青で表示される件。
twitterはfavicon.svgとfavicon.icoを用意していて(FirefoxのView Page Info→Mediaで見れます)Firefoxはfavicon.svgを正しくきちんと表示できているんですが。内部的にfavicon処理の中ではMime-Type(image/svg+xml)を抜きにしてデータフォーマットを憶測しようとして失敗し、favicon.svgをFailedFavicon扱いにしてしまい、2回目以降はfavicon.icoの方を表示するようになっているようです。ナンダコリャ
366324 – SVG site icons (favicons, shortcut icons) support
Mime-Typeを参照して処理するようにすれば正常に動作するようになります。逆になぜそうなっていないのかさっぱり(?_?)

(一番謎なのは、favicon.svgの方はなぜ黒なのか、だったり)

[6/15追記]
で、bug366324はfixされてtwitterのfaviconはすべて黒くなりました(^^;
この黒アイコンは、別のmetaタグで色付けされることが想定されているらしく。
1174552 – Twitter reliably loads with a black SVG favicon instead of their blue ICO favicon. (They provide both.)
はてさて。

[6/17追記]
twitterがfavicon.svg→favicon.icoの順に修正しましたね。これでsafari以外のブラウザではfavicon.icoが使用されることに。とりあえず青に戻って、なんだかな(^^;
appleの勝手仕様がどうなるのか謎ですが。よくこんなもん標準仕様の場で議論できるな、とは思うけど。議論の進行がなにかしら背景を前提としているようなのでアレですが。独自拡張にしか見えん。

[6/19追記]
どうでもいいけど、内部的にはfavicon.svgをfaviconとして処理した後でfavicon.icoを再度faviconとして処理するようになっているようで。pageのsourceはそりゃそうなってるけど。採用すべきfaviconはただひとつなんで。sourceに100コ記述があったら100回処理すんのか?

 

コメント

E10s & uBlock

2015-06-04 07:33:44 | 雑記

The Official Win32 20150602 builds are not yet out • mozillaZine Forums
からの
1171173 – After start, Disabling/Enabling uBlock considerably lowers page load times with E10s
で...
(ごちゃごちゃ書いてあるけど私の勘違いでなければ単純に)普通にE10sもuBlock Originも有効な状態でNightlyを起動した後、Add-ons ManagerでuBlockをDisableしてEnableする(ボタンを連続してクリック)と、ページロード時間が短縮される、と。
Developer ToolsのNetworkで確認できると思いますが。とあるサイトで試してみたら、平均(数回ロードした後の5回平均)5.5秒が、uBlock Disable/Enable後は4.0秒になりました。
どゆこと?(-_-)

いやFirefoxの起動処理の何かが間に合ってなくてuBlockがそれに引っかかってる(Firefoxが完全に起動した後にuBlockをスタートさせれば問題は発生しない)ってことなんだろうけど...

[追記]
uBlockとは関係ないけど、Developer ToolsのNetworkを見てたらば。
例えば非E10sでhttps://developer.mozilla.org/en-US/を何回か続けざまにアクセス(bookmarkから、あるいはUrlバーでEnter)すると大体18requestsなんですが。E10sで同じことをやると28requestsに。非E10sでリロードすると28requestsになるので、E10sでは常にリロードになってるっぽい...(browser.cache.check_doc_frequencyが無視されてるとか?)

 

コメント

E10s

2015-05-21 10:29:30 | 雑記

Firefox Nightlyにて。mozillaZineのforumに「このwebページでcrashするぞー」というのがあって。確かにcrashするんですが。タブが。
>Bad news first: This tab has crashed
>Now for the good news: You can just close this tab, restore it or restore all your crashed tabs.
別のタブも同時にcrashしまして。デフォルトでは dom.ipc.processCount=1 で全タブ1processなんで、当然そうなるんですが。
例えばprocessCountが5でタブを10個開いた時、どういう割り当て方をされるのかわかりませんが(均等に割り当てられるのであれば1process2タブということに)、タブがcrashした時、道連れになるタブがあるってことで... 無関係な全く問題の無いタブが道連れになってしまう、というのはなんだかいかがなものかという気がするのですが。直観的じゃないというか、道連れになったタブ(のページ)に何か問題があったんじゃないかと疑われてしまうというか。違和感ハンパない。もちろんprocessCountを十分大きな値にすれば回避できる話ではあるんですが。
奇怪だ...

メインプロファイルでe10sを使う気はないのでいいんですけど。

[追記]
dom.ipc.processCount=2にしてタブを4つ開き、うち1つでcrashを引き起こしたところ。たまたま同じprocessで実行されていたgooのタブにもcrashマークが付いている(crashしている)。

(screenshotを取ろうと何度か試してみたら、crashタブ数は1,2,3,4全パターンあった-_-)
(まさかとは思うけどこれってprocessとは関係なく別の理由で発生してるんだろうか...)
(>processCountを十分大きな値にすれば回避できる話ではあるんですが。
ってのも怪しいな...)

[追記]
about:memoryでWeb Content (pid xxxx)を見ると、どのプロセスにどのタブが割り当てられるかはやっぱり均等じゃないですね。順繰りでもないし。謎。

 

コメント

2.5H

2015-05-15 09:48:20 | 雑記

Firefoxのビルドが。2.5時間...(・・)
Celeron847(メモリ8GB,SSD128GB)、Windows 8.1、Visual Studio 2013ce、で。

しかしprintfデバッグはできない(consoleに何も出てこない)のであった・・・

しかも--enable-debugでビルドしようとしたらエラーでビルドできないという・・・

どうしたもんか(-_-;)

[5/17追記]
で、--enable-debug-symbolsでビルドしてどうにかVisualStudioでのデバッグが可能になったところで力尽きた。breakpointで止めたい所で止められない止まらない(-_-) 止められる所でもなぜか一部メモリが読めず変数の値が分からない。ダメダコリャ

[5/19追記]
そうこうしている内にWindowsでMozTemp〜フォルダが残りっぱなしになるバグは修正されていたのであった(・・;)(mozilla-centralで)

 

コメント

backlog?

2015-05-09 14:23:09 | 雑記

1163115 – Enable APZ for all Desktop windows if E10S is enabled

え?
と思いつつ、ついこないだメモリ食いまくってFirefoxをハングさせたapzが今どうなってんのかと。試してみたらさすがにハングはしなかったけど、backで元のスクロール位置に戻れないバグは健在で。
1106280 – Vertical scroll position is not saved when pressing back button
Project Flagsのtracking-b2g: backlogって...どういう位置づけなんだろう(?_?)
backlogっていうと、私はリリース時の積み残し(ここはできてないけどとりあえずリリースしちゃうよっ!次のリリースで追加するからねっ!できたらねっ!的な^^;)のイメージが強くて、ヤな予感しかしないんですけど。
取りこぼすべきでない残務、の意味ならいいんですけどね...
だいたいblockerバグだろこれ(-_-)

[5/10追記]
戻れるページと戻れないページがある件については...session historyにviewerが保存されている場合にはスクロール位置が復元されず、session historyにviewerが保存されていなくて再ロードする場合にはスクロール位置も正しく復元される、らしく。
なのでbrowser.sessionhistory.max_total_viewersを0にしてしまえばとりあえず回避はできる、と。

 

コメント