概要 某フリマアプリの会社でクエリを分解するのに kagome を使っていたそうなのですが(今は知らない)、ときどき変な解析結果になるとレポートをいただきました。 なんか、最初は正しく動いているんだけど、しばらくしておかしくなり、まれにまた正常動作に戻る・・・と。 聞いただけでやっかいな類いのバグですが、原因が分かったので顛末を記録しておきます。 このバグは kagome v1.11.1 (kagome.ipadic は v1.1.1)で対応済みです。 tl;dr 形態素解析器 kagome では、形態素解析をおこなう際にラティスと呼ばれるグラフ構造を構築するのですが、 このグラフに使うデータ(ラティスの外枠とノード部分)を再利用するために sync.Pool を利用しています。 ラティスの外枠(ノードを格納するスライス)を戻すときに、ノードのポインタを握ったまま sync.Pool に戻
![kagome v1.11.1 をリリースしました。あるいは sync.Pool にまつわるバグの修正 - 押してダメならふて寝しろ](https://cdn-ak-scissors.b.st-hatena.com/image/square/2e778bcffec7cbd031f4f0e6e700ab1b87021dd9/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fi%2Fikawaha%2F20191021%2F20191021144055.png)