While I agree there is likely a problem, I don't think getting the lock in speller_impl is the right place. Please try the attached patch (better_dict_cache_lock.patch) and let me know if it fixes the problem.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Attached is the patch as applied to CVS. I am now 99% sure the patch is doing the right thing, The fact that I didn't get a lock when using the dictionary cache is an oversight. Normally get_cache_data is used which gets the lock for you, but in this case I am doing something slightly unusual so I didn't use that function.
Thank you for finding it, it was likely causing other mysterious, hard to find, crashes in multi-threaded uses of Aspell.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
While I agree there is likely a problem, I don't think getting the lock in speller_impl is the right place. Please try the attached patch (better_dict_cache_lock.patch) and let me know if it fixes the problem.
Attached is the patch as applied to CVS. I am now 99% sure the patch is doing the right thing, The fact that I didn't get a lock when using the dictionary cache is an oversight. Normally get_cache_data is used which gets the lock for you, but in this case I am doing something slightly unusual so I didn't use that function.
Thank you for finding it, it was likely causing other mysterious, hard to find, crashes in multi-threaded uses of Aspell.
Fix, as applied to CVS.
This bug is now fixed (or patch applied) in Aspell 0.60.6.1 which is now Available.