[mayaa-user:970] Re: 無限ループが発生しました

Susumu ISHIGAMI [E-MAIL ADDRESS DELETED]
2013年 3月 9日 (土) 11:39:57 JST


いしがみです。

> rhino の方は、最新版でも別の場所で修正があるようなので、別途手元で変更して
> jarを作成するしかないかもしれません。
> https://github.com/mozilla/rhino/pull/103

情報ありがとうございます。
rhino 1.7r4まで行っているのですね!日本語情報読んでたら古すぎでした(^^;
実環境での無限ループの発生頻度などを照らしあわせてみて、対応を検討してみます。
上手く行ったらフィードバックします!

2013年3月4日 21:29 suga <ko.suga @ gmail.com>:
> suga です。
>
> 2013/3/1 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>
>>1点目
>>下記の箇所でHashMapの非同期の問題と思われる箇所がありました。
>>Rhino内部によるものと思われ、
>
> rhino の方は、最新版でも別の場所で修正があるようなので、別途手元で変更して
> jarを作成するしかないかもしれません。
> https://github.com/mozilla/rhino/pull/103
>
>
> --
> suga ( ko.suga @ gmail.com )
>
>
> 2013/3/1 Susumu ISHIGAMI <susumu.ishigami @ gmail.com>
>>
>> 石上です。
>>
>> いつもお世話になっております。
>>
>> 無限ループと思われる箇所が2箇所見つかりました。
>> それぞれ別原因と思われ、また、一方は自分が既存クラスをExtendしている箇所ですので、
>> オリジナルの状態では発生しないかもしれません。
>>
>> 報告すべきか迷いましたが、念のために報告します。
>> (先ほど書きかけのメールを送ってしまったために報告せざるを得ない状況になってしまったのですが^^;)
>>
>> 1点目
>> 下記の箇所でHashMapの非同期の問題と思われる箇所がありました。
>> Rhino内部によるものと思われ、
>>
>>
>> http://grepcode.com/file/repo1.maven.org/maven2/rhino/js/1.7R2/org/mozilla/javascript/JavaMembers.java
>>
>> ソースを読んでみると、HashMapが使われています。
>> もし、呼び出し元の方で回避可能であったらご対応お願い致します。
>>
>> at java.util.HashMap.get(HashMap.java:346)
>> at org.mozilla.javascript.JavaMembers.lookupClass(JavaMembers.java:833)
>> at
>> org.mozilla.javascript.NativeJavaObject.initMembers(NativeJavaObject.java:90)
>> at
>> org.mozilla.javascript.NativeJavaObject.<init>(NativeJavaObject.java:80)
>> at
>> org.mozilla.javascript.NativeJavaObject.<init>(NativeJavaObject.java:70)
>> at
>> org.mozilla.javascript.WrapFactory.wrapAsJavaObject(WrapFactory.java:149)
>> at
>> org.seasar.mayaa.impl.cycle.script.rhino.WrapFactoryImpl.wrapAsJavaObject(WrapFactoryImpl.java:53)
>> at org.mozilla.javascript.WrapFactory.wrapNewObject(WrapFactory.java:124)
>> at
>> org.mozilla.javascript.NativeJavaClass.constructSpecific(NativeJavaClass.java:284)
>> at
>> org.mozilla.javascript.NativeJavaClass.construct(NativeJavaClass.java:200)
>> at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2327)
>> at org.mozilla.javascript.gen.c2._c0(/mayaa/util.mjs:13)
>> at org.mozilla.javascript.gen.c2.call(/mayaa/util.mjs)
>> at org.mozilla.javascript.gen.c2.exec(/mayaa/util.mjs)
>> at
>> org.seasar.mayaa.impl.cycle.script.rhino.SourceCompiledScriptImpl.execute(SourceCompiledScriptImpl.java:97)
>> at
>> org.seasar.mayaa.impl.cycle.AbstractServiceCycle.load(AbstractServiceCycle.java:79)
>> at
>> org.seasar.mayaa.impl.cycle.AbstractServiceCycle.load(AbstractServiceCycle.java:59)
>> at sun.reflect.GeneratedMethodAccessor161.invoke(Unknown Source)
>> at
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>> at java.lang.reflect.Method.invoke(Method.java:585)
>> at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:161)
>> at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:247)
>> at
>> org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
>> at org.mozilla.javascript.gen.c1._c0(/view/default.mayaa#beforeRender:4)
>> at org.mozilla.javascript.gen.c1.call(/view/default.mayaa#beforeRender)
>> at
>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
>> at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
>> at org.mozilla.javascript.gen.c1.call(/view/default.mayaa#beforeRender)
>> at org.mozilla.javascript.gen.c1.exec(/view/default.mayaa#beforeRender)
>> at
>> org.seasar.mayaa.impl.cycle.script.rhino.TextCompiledScriptImpl.normalExecute(TextCompiledScriptImpl.java:126)
>> at
>> org.seasar.mayaa.impl.cycle.script.rhino.TextCompiledScriptImpl.execute(TextCompiledScriptImpl.java:166)
>>
>>
>> 2点目は、次の箇所でやはり無限ループと思われる現象が発生しました。
>> whileの外に抜けないようです。
>>
>> at
>> org.seasar.mayaa.impl.engine.specification.SpecificationUtil.findSpecification(SpecificationUtil.java:94)
>> at
>> org.seasar.mayaa.impl.engine.specification.SpecificationUtil.findSpecification(SpecificationUtil.java:113)
>> at
>> org.seasar.mayaa.impl.engine.EngineUtil.getSourcePath(EngineUtil.java:109)
>>
>>
>> ただ、こちらは、呼び出し元が自分が独自にいじったクラスで、
>> 具体的には、
>> ScriptEnvironmentImplのcompileをOverrideし、
>> 取得したcompiledScriptを独自のクラスでラップをして
>> ラッパークラス側でexecuteを呼ぶ中で、getSourcePath
>> を呼んでいます(爆)
>>
>> おそらく自分の使い方が間違っているのだと思います。
>> ただ、この箇所で無限ループしてしまうようなことが考えられるのか分かりますでしょうか?
>>
>> 上記二つはスレッドダンプを解析していて見つけたものですので、常に再現出来るものではありません。
>> 多分に偶発的なものか、自分の使い方が間違っていた可能性がありますが、
>> もし何か分かればご参考にしてください。
>>
>>
>>
>> --
>> Susumu ISHIGAMI
>> susumu.ishigami @ gmail.com
>>
>> _______________________________________________
>> mayaa-user mailing list
>> mayaa-user @ ml.seasar.org
>> https://ml.seasar.org/mailman/listinfo/mayaa-user
>
>
>
> _______________________________________________
> mayaa-user mailing list
> mayaa-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/mayaa-user



--
Susumu ISHIGAMI
susumu.ishigami @ gmail.com


mayaa-user メーリングリストの案内