Tíquete #41144

Linux で忍者/修行僧/練気術師で始め、オートローラーを回すと落ちる

: 2021-01-13 02:56 Última Atualização: 2021-01-18 21:31

Relator:
(Anônimo)
Dono:
Tipo:
Estado:
Fechado
Componente:
(Nenhum)
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
Nenhum

Details

release/3.0.0Alpha e2af5c4 を --enable-xft 付きでビルドして確認しました。 そのままでは特にメッセージなどは表示されず突然終了するだけですが、main.c 内の signals_init() をコメントアウトして調べたところ SIGSEGV が発生しているようでした。

gdb で追ってみたところ、player-status-flags.c 内の has_not_ninja_weapon() および has_not_monk_weapon() において、tval の値が 4294967277 (= 2**32 - 19) になっており、これを添字として w_max を参照した結果落ちているようです。 tval の値が変になるのは、inventory_list[INVEN_RARM + i].tval の値が 0 になっているのが原因と思います。

あまりコードを理解できていないのですが、インベントリの初期化漏れとかでしょうか?

Ticket History (3/6 Histories)

2021-01-13 02:56 Updated by: None
  • New Ticket "Linux で忍者/修行僧/練気術師で始め、オートローラーを回すと落ちる" created
2021-01-13 02:57 Updated by: taotao
Comentário

ログインしてませんでしたが報告者は自分です。失礼いたしました。

もう少しソースを読んでみたのですが、「ふさわしい武器」の判定を行う際に素手かどうかのチェックを行っていないのが原因ではないでしょうか?(違ったらすみません)

v2.2.1 では xtra1.c 内の 5425 行目に has_not_ninja_weapon() および has_not_monk_weapon() 相当の処理があり、そこでは if (buki_motteruka(INVEN_RARM+i)) というチェックが入っていますが、現在のコードではこの判定が消えています。

(Edited, 2021-01-13 04:00 Updated by: taotao)
2021-01-14 01:54 Updated by: deskull
Comentário

報告ありがとうございます。検証します。

2021-01-16 23:42 Updated by: habu
Comentário

修正を担当します。

2021-01-17 00:26 Updated by: habu
  • Resolução Update from Nenhum to Fixed
Comentário

下記コミットにて修正。マージをよろしくおねがいします。

https://osdn.net/projects/hengband/scm/git/hengband/commits/373e190dba04c39be09da30f2046b288a5faa4d1

2021-01-18 21:31 Updated by: deskull
  • Estado Update from Aberto to Fechado
Comentário

当方の改編でやった関数の未装備チェック漏れ申し訳ないです。マージしました。

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Login