GrammaticalFramework/GF

Crash while switching between languages.

Closed this issue · 4 comments

This is the log

java.lang.RuntimeException: An error occured while executing doInBackground()
                                                                             at android.os.AsyncTask$3.done(AsyncTask.java:304)
                                                                             at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
                                                                             at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
                                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                                             at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                             at java.lang.Thread.run(Thread.java:818)
                                                                          Caused by: org.grammaticalframework.pgf.PGFError: The concrete syntax is not loaded
                                                                             at org.grammaticalframework.pgf.Concr.linearize(Native Method)
                                                                             at com.gftranslation.GFTranslator.translate(GFTranslator.java:368)
                                                                             at com.proxy.businessobject.OfflineTranslate$3.doInBackground(OfflineTranslate.java:391)
                                                                             at com.proxy.businessobject.OfflineTranslate$3.doInBackground(OfflineTranslate.java:383)
                                                                             at android.os.AsyncTask$2.call(AsyncTask.java:292)
                                                                             at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                             at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                                                                             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                                                                             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                                                                             at java.lang.Thread.run(Thread.java:818) 

Thanks for the quick response. Ok,But I am loading concrete syntax on start. The log says

Trying to open gfoffline/App.pgf
gfoffline/App.pgf loaded (608 ms)
Trying to load gfoffline/AppJpn.pgf_c
Trying to load gfoffline/AppEng.pgf_c
gfoffline/AppJpn.pgf_c loaded (940 ms)
gfoffline/AppEng.pgf_c loaded (2227 ms)

And English to Japanese works 1st time, then I switch to Japanese to English which also works just fine.
The issue happens when I switch back again to English to Japanese. I have to load the concrete syntax again?.

Yes you are right. While setting setTargetLanguage unload of previous concrete syntax is happening,I didn't noticed it. I think I have to handle this myself, anyway thanks for pointing me in right direction.