質問する
0

Writer(Win版)がフリーズする

質問日 2014-11-01 10:00:48 +0200

hachisuka のGravatar画像

updated 2015-04-28 00:56:52 +0200

バージョン4くらいからWriter(Win版)で[ctrl]+[z]を押した際にフリーズする事が多くなったような気がするのですが、同じような経験されている方いらっしゃらないでしょうか?

なかなか再現できず質問したくてもできずにいたのですが、先日、半角英数字を入力→全角文字を入力→[ctrl]+[z]→[ctrl]+[z]の手順でフリーズする事を発見しました。私の環境下では再現性がありましたので実際に行った手順を書き込みます。

<手順>

  1. Writerを起動
  2. 入力モードが日本語になっている場合は[半角/全角]キーを押して日本語入力オフ(直接入力モード)に変更
  3. 「a」(半角)を入力
  4. [半角/全角]キーを押して日本語モードに変更
  5. 「あ」を入力 ※コピー&ペーストではなくキーボードから入力
  6. [enter]キーを押して日本語を確定
  7. [ctrl]+[z]→「あ」が消えます
  8. [ctrl]+[z]→soffice.binのCPU使用率が50%~99%となり操作を受け付けなくなります

<環境等>

  • LibreOfficeのバージョンを4.0.6, 4.2.6, 4.3.0と変えてみたり、OSをXP, Vista, 7(いずれも32bit)と変えてみたり、セーフモードで起動してみたりしましたが結果は同じでした。ちょっと曖昧ですみません。
  • Ubuntu版LibreOffice4.3.2.2では再現されませんでした。→最初のUndoで「aあ」の両文字が消えます。
edit retag flag offensive close merge delete

3 Answer

2

回答日 2014-11-04 15:28:11 +0200

meguro.jun のGravatar画像

updated 2014-11-04 15:29:04 +0200

Win7 32bit版+LO 4.2.5で再現しました。 Ubuntu4.10+LO4.3.2では、報告にもあるとおり「aあ」がまとめて消えてしまう現象が再現しました。 以前から再現方法を探していたんですが、とてもシンプルな手順を提示して頂いたので光明が見えた感じです。 win4.3.3での再現性を確認したうえで報告するのが良さげですね。

edit flag offensive delete link もっと

Comments

また、IMEがONの場合にアンドゥすることで発生するものと見られますので、Google日本語入力などに切り替える事で発生しない様なら、暫定的な対応方法として案内できるかも知れませんね。

meguro.jun のGravatar画像meguro.jun ( 2014-11-04 15:35:47 +0200 )edit

目黒さん、回答有難うございます。

昨日時間が取れなくてコメントできなかったのですが、Windows版masterでも再現しました。私はGoogle日本語入力を利用しています。

時間が取れたらTDF Wikiにある方法 でバックトレースを取って、バグを起票しようと思いますが、どなたかやっていただいてももちろん構いません。

Naruhiko のGravatar画像Naruhiko ( 2014-11-04 23:03:36 +0200 )edit
1

回答日 2014-11-04 01:07:58 +0200

Naruhiko のGravatar画像

updated 2014-11-04 01:09:11 +0200

肝心なことを書いていなかったので追記しますが、4.2.7でもいただいた手順で再現しました。

ちゃんとした情報でなくて申し訳ないですが、私の環境(Windows 7 64bit)だとWriter 4.3.2のときはやはりUndoが不安定で、4.2.7にしてしまったというのはあります。Ubuntuだとそんなことはなくて4.3系でも安定して動いていますが、これはもしかしたら64bit版か32bit版かという違いかもしれません(Windows版は32bitバイナリしか存在しません)。

あとでもう少し調べて、追加で回答しますが、取り急ぎ情報まで。

edit flag offensive delete link もっと
1

回答日 2014-12-14 00:52:12 +0200

Hidemune のGravatar画像

updated 2014-12-14 00:55:29 +0200

Windows7 64bit で、バックトレースを取れました。これで原因を特定できないでしょうか?

    i18npoollo.dll!__security_check_cookie(unsigned int cookie) Line 55 C
    i18npoollo.dll!com::sun::star::i18n::BreakIterator_Unicode::loadICUBreakIterator(struct com::sun::star::lang::Locale const &,short,short,char const *,class rtl::OUString const &)  C++
    i18npoollo.dll!com::sun::star::i18n::BreakIterator_Unicode::nextCharacters(class rtl::OUString const &,long,struct com::sun::star::lang::Locale const &,short,long,long &)  C++
    i18npoollo.dll!com::sun::star::i18n::BreakIteratorImpl::nextCharacters(class rtl::OUString const &,long,struct com::sun::star::lang::Locale const &,short,long,long &)  C++
    swlo.dll!SwBreakIt::getGraphemeCount(class rtl::OUString const &,long,long) C++
    swlo.dll!SwTxtNode::CountWords(struct SwDocStat &,long,long)    C++
    swlo.dll!SwDoc::CountWords(class SwPaM const &,struct SwDocStat &)  C++
    swlo.dll!SwEditShell::CountWords(struct SwDocStat &)    C++
    swlo.dll!SwView::StateStatusLine(class SfxItemSet &)    C++
    swlo.dll!SfxStubSwViewStateStatusLine(class SfxShell *,class SfxItemSet &)  C++
    sfxlo.dll!SfxDispatcher::_FillState(class SfxSlotServer const &,class SfxItemSet &,class SfxSlot const *)   C++
    sfxlo.dll!SfxBindings::Update_Impl(class SfxStateCache *)   C++
    sfxlo.dll!SfxBindings::NextJob_Impl(class Timer *)  C++
    sfxlo.dll!SfxBindings::LinkStubNextJob_Impl(void *,void *)  C++
    tllo.dll!Link::Call(void *) C++
    vcllo.dll!Timer::Timeout(void)  C++
    vcllo.dll!EmitTimerCallback(void)   C++
    vcllo.dll!SalComWndProc(struct HWND__ *,unsigned int,unsigned int,long,int &)   C++
    vcllo.dll!SalComWndProcW(struct HWND__ *,unsigned int,unsigned int,long)    C++
    user32.dll!_InternalCallWinProc@20()   Unknown
    user32.dll!_UserCallWinProcCheckWow@32()   Unknown
    user32.dll!_DispatchMessageWorker@8()  Unknown
    user32.dll!_DispatchMessageW@4()   Unknown
    vcllo.dll!ImplSalAcquireYieldMutex(unsigned long)   C++
    vcllo.dll!ImplSalYield(bool,bool)   C++
    vcllo.dll!WinSalInstance::Yield(bool,bool)  C++
    vcllo.dll!Application::Execute(void)    C++
    sofficeapp.dll!desktop::Desktop::Main(void) C++
    vcllo.dll!ImplSVMain(void)  C++
    vcllo.dll!SVMain(void)  C++
    sofficeapp.dll!_soffice_main() C++
    soffice.bin!_WinMain@16()  C
>   soffice.bin!__tmainCRTStartup() Line 618    C
    kernel32.dll!@BaseThreadInitThunk@12() Unknown
    ntdll.dll!___RtlUserThreadStart@8()    Unknown
    ntdll.dll!__RtlUserThreadStart@8() Unknown
edit flag offensive delete link もっと

Comments

これは、固まった状態のスタックトレースです。役に立ちますでしょうか?

Hidemune のGravatar画像Hidemune ( 2014-12-14 00:53:35 +0200 )edit

sal3.dll!_rtl_uString_release() C++ swlo.dll!SwBreakIt::getGraphemeCount(class rtl::OUString const &,long,long) C++ 上記で始まるパターンもありました。getGraphemeCountが気になります。

Hidemune のGravatar画像Hidemune ( 2014-12-14 01:15:31 +0200 )edit
Hidemune のGravatar画像Hidemune ( 2014-12-14 01:32:11 +0200 )edit

本来の狙いとして、英語などで単語毎にアンドゥされるようにするための処理ですね。Linuxで試して見ましたが、こちらは不具合は起きないようです。なぜWinのみ? という疑問と、どう修正すべきかが、まだ見えません。どなたかアドバイス有りますでしょうか?

Hidemune のGravatar画像Hidemune ( 2014-12-14 02:35:38 +0200 )edit

MLにパッチを投げましたので、どなたかご確認お願いします。 無限ループに陥っていたので、カーソル位置が変わっていなかったら抜けるようにしました。 環境によっては無駄な処理ですが、i18nの実装に依存せず、文脈的にも正しいと思います。

Hidemune のGravatar画像Hidemune ( 2014-12-14 13:43:40 +0200 )edit

パッチ投稿ありがとうございます。

バグを追いやすくするために起票しました。 https://www.libreoffice.org/bugzilla/...

Naruhiko のGravatar画像Naruhiko ( 2014-12-19 16:36:37 +0200 )edit
ログイン/サインアップして回答する

質問ツール

1 follower

Stats

Asked: 2014-11-01 10:00:48 +0200

Seen: 1,969 times

Last updated: Dec 14 '14