>>> ということは危ないのは RUBY_VM_SET_INTERRUPT() がロストしたときに、タイムアウトなしの >>> スリープをしていて、vm->running_thread にならないから、タイマースレッドに >>> 起こして貰えないケースでしょうか? >> >> ちょっとその例が具体的にぱっとわからないのですが,th->interrupt_flag >> を監視している,前のメールで出してもらった例は危険そうです.危険そう,と >> 思うのだけど,本当に危険なのかは実は自身が無いのですが. > > じゃあパッチつくるから、パッチが汚くなかったらacceptしてくださいよ。危険の > ありなしをあれこれ悩むよりも建設的です。きっと しばらく考えたところ、書き込み側で atomic ops 使えば十分という気がしてきました。 それなら、readerは速度低下0なのでパフォーマンス問題がおこりようがないし。 Linuxでしかテストしてませんが、こんなもんでどうでしょうか? Y29tbWl0IDhlMWZkMDdlYWIwNzAyMTVlYzUyYmRkZTNjZjNkNzdhMWQwMDQxM2UKQXV0aG9yOiBL T1NBS0kgTW90b2hpcm8gPGtvc2FraS5tb3RvaGlyb0BnbWFpbC5jb20+CkRhdGU6ICAgV2VkIE1h eSAxMSAyMjoxOTo1MSAyMDExICswOTAwCgogICAgaW50ZXJydXB0IGZsYWcKICAgIAogICAgU2ln bmVkLW9mZi1ieTogS09TQUtJIE1vdG9oaXJvIDxrb3Nha2kubW90b2hpcm9AZ21haWwuY29tPgot LS0KIGF0b21pYy5oICB8ICAgMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IHNpZ25hbC5jICB8ICAgMzYgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB0 aHJlYWQuYyAgfCAgICA5ICsrKysrLS0tLQogdm1fY29yZS5oIHwgICAgOSArKysrKy0tLS0KIDQg ZmlsZXMgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYXRvbWljLmggYi9hdG9taWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi44ZGUzOGE1Ci0tLSAvZGV2L251bGwKKysrIGIvYXRvbWljLmgKQEAgLTAsMCArMSwzNSBA QAorI2lmbmRlZiBSVUJZX0FUT01JQ19ICisjZGVmaW5lIFJVQllfQVRPTUlDX0gKKworI2lmZGVm IF9XSU4zMgordHlwZWRlZiBMT05HIHJiX2F0b21pY190OworCisjIGRlZmluZSBBVE9NSUNfU0VU KHZhciwgdmFsKSBJbnRlcmxvY2tlZEV4Y2hhbmdlKCYodmFyKSwgKHZhbCkpCisjIGRlZmluZSBB VE9NSUNfSU5DKHZhcikgSW50ZXJsb2NrZWRJbmNyZW1lbnQoJih2YXIpKQorIyBkZWZpbmUgQVRP TUlDX0RFQyh2YXIpIEludGVybG9ja2VkRGVjcmVtZW50KCYodmFyKSkKKyMgZGVmaW5lIEFUT01J Q19PUiBJbnRlcmxvY2tlZE9yKCYodmFyKSwgKHZhbCkpCisjIGRlZmluZSBBVE9NSUNfRVhDSEFO R0UodmFyLCB2YWwpIEludGVybG9ja2VkRXhjaGFuZ2UoJih2YXIpLCAodmFsKSkKKworI2VsaWYg ZGVmaW5lZCBIQVZFX0dDQ19BVE9NSUNfQlVJTFRJTlMKKy8qIEBzaHlvdWhlaSBoYWNrIHRvIHN1 cHBvcnQgYXRvbWljIG9wZXJhdGlvbnMgaW4gY2FzZSBvZiBnY2MuIEdjYworICogaGFzIGl0cyBv d24gcHNldWRvLWluc25zIHRvIHN1cHBvcnQgdGhlbS4gIFNlZSBpbmZvLCBvcgorICogaHR0cDov L2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL0F0b21pYy1CdWlsdGlucy5odG1sICovCisKK3R5 cGVkZWYgdW5zaWduZWQgaW50IHJiX2F0b21pY190OyAvKiBBbnl0aGluZyBPSyAqLworIyBkZWZp bmUgQVRPTUlDX1NFVCh2YXIsIHZhbCkgIF9fc3luY19sb2NrX3Rlc3RfYW5kX3NldCgmKHZhciks ICh2YWwpKQorIyBkZWZpbmUgQVRPTUlDX0lOQyh2YXIpIF9fc3luY19mZXRjaF9hbmRfYWRkKCYo dmFyKSwgMSkKKyMgZGVmaW5lIEFUT01JQ19ERUModmFyKSBfX3N5bmNfZmV0Y2hfYW5kX3N1Yigm KHZhciksIDEpCisjIGRlZmluZSBBVE9NSUNfT1IodmFyLCB2YWwpIF9fc3luY19vcl9hbmRfZmV0 Y2goJih2YXIpLCAodmFsKSkKKyMgZGVmaW5lIEFUT01JQ19FWENIQU5HRSh2YXIsIHZhbCkgX19z eW5jX2xvY2tfdGVzdF9hbmRfc2V0KCYodmFyKSwgKHZhbCkpCisKKyNlbHNlCit0eXBlZGVmIGlu dCByYl9hdG9taWNfdDsKKworIyBkZWZpbmUgQVRPTUlDX1NFVCh2YXIsIHZhbCkgKCh2YXIpID0g KHZhbCkpCisjIGRlZmluZSBBVE9NSUNfSU5DKHZhcikgKCsrKHZhcikpCisjIGRlZmluZSBBVE9N SUNfREVDKHZhcikgKC0tKHZhcikpCisjIGRlZmluZSBBVE9NSUNfT1IodmFyLCB2YWwpICgodmFy KSB8PSAodmFsKSkKKyMgZGVmaW5lIEFUT01JQ19FWENIQU5HRSh2YXIsIHZhbCkgcnVieV9hdG9t aWNfZXhjaGFuZ2UoJih2YXIpLCB2YWwpCisjZW5kaWYKKworI2VuZGlmIC8qIFJVQllfQVRPTUlD X0ggKi8KZGlmZiAtLWdpdCBhL3NpZ25hbC5jIGIvc2lnbmFsLmMKaW5kZXggZDUzYzU2NC4uMWEx ZDFkNSAxMDA2NDQKLS0tIGEvc2lnbmFsLmMKKysrIGIvc2lnbmFsLmMKQEAgLTE2LDMzICsxNiwx NSBAQAogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8 ZXJybm8uaD4KKyNpbmNsdWRlICJhdG9taWMuaCIKIAotI2lmZGVmIF9XSU4zMgotdHlwZWRlZiBM T05HIHJiX2F0b21pY190OwotCi0jIGRlZmluZSBBVE9NSUNfVEVTVCh2YXIpIEludGVybG9ja2Vk RXhjaGFuZ2UoJih2YXIpLCAwKQotIyBkZWZpbmUgQVRPTUlDX1NFVCh2YXIsIHZhbCkgSW50ZXJs b2NrZWRFeGNoYW5nZSgmKHZhciksICh2YWwpKQotIyBkZWZpbmUgQVRPTUlDX0lOQyh2YXIpIElu dGVybG9ja2VkSW5jcmVtZW50KCYodmFyKSkKLSMgZGVmaW5lIEFUT01JQ19ERUModmFyKSBJbnRl cmxvY2tlZERlY3JlbWVudCgmKHZhcikpCi0KLSNlbGlmIGRlZmluZWQgSEFWRV9HQ0NfQVRPTUlD X0JVSUxUSU5TCi0vKiBAc2h5b3VoZWkgaGFjayB0byBzdXBwb3J0IGF0b21pYyBvcGVyYXRpb25z IGluIGNhc2Ugb2YgZ2NjLiBHY2MKLSAqIGhhcyBpdHMgb3duIHBzZXVkby1pbnNucyB0byBzdXBw b3J0IHRoZW0uICBTZWUgaW5mbywgb3IKLSAqIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2Nz L2djYy9BdG9taWMtQnVpbHRpbnMuaHRtbCAqLwotCi10eXBlZGVmIHVuc2lnbmVkIGludCByYl9h dG9taWNfdDsgLyogQW55dGhpbmcgT0sgKi8KLSMgZGVmaW5lIEFUT01JQ19URVNUKHZhcikgX19z eW5jX2xvY2tfdGVzdF9hbmRfc2V0KCYodmFyKSwgMCkKLSMgZGVmaW5lIEFUT01JQ19TRVQodmFy LCB2YWwpICBfX3N5bmNfbG9ja190ZXN0X2FuZF9zZXQoJih2YXIpLCAodmFsKSkKLSMgZGVmaW5l IEFUT01JQ19JTkModmFyKSBfX3N5bmNfZmV0Y2hfYW5kX2FkZCgmKHZhciksIDEpCi0jIGRlZmlu ZSBBVE9NSUNfREVDKHZhcikgX19zeW5jX2ZldGNoX2FuZF9zdWIoJih2YXIpLCAxKQotCi0jZWxz ZQotdHlwZWRlZiBpbnQgcmJfYXRvbWljX3Q7Ci0KLSMgZGVmaW5lIEFUT01JQ19URVNUKHZhcikg KCh2YXIpID8gKCh2YXIpID0gMCwgMSkgOiAwKQotIyBkZWZpbmUgQVRPTUlDX1NFVCh2YXIsIHZh bCkgKCh2YXIpID0gKHZhbCkpCi0jIGRlZmluZSBBVE9NSUNfSU5DKHZhcikgKCsrKHZhcikpCi0j IGRlZmluZSBBVE9NSUNfREVDKHZhcikgKC0tKHZhcikpCisjaWYgIWRlZmluZWQoX1dJTjMyKSAm JiAhZGVmaW5lZChIQVZFX0dDQ19BVE9NSUNfQlVJTFRJTlMpCityYl9hdG9taWNfdCBydWJ5X2F0 b21pY19leGNoYW5nZShyYl9hdG9taWNfdCAqcHRyLCByYl9hdG9taWNfdCB2YWwpCit7CisgICAg cmJfYXRvbWljX3Qgb2xkID0gKnB0cjsKKyAgICAqcHRyID0gdmFsOworICAgIHJldHVybiBwdHI7 Cit9CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoX19CRU9TX18pIHx8IGRlZmluZWQoX19IQUlLVV9f KQpkaWZmIC0tZ2l0IGEvdGhyZWFkLmMgYi90aHJlYWQuYwppbmRleCAxODJmZWIzLi4xMjRiNGU0 IDEwMDY0NAotLS0gYS90aHJlYWQuYworKysgYi90aHJlYWQuYwpAQCAtMTI4OSwxOSArMTI4OSwy MCBAQCB0aHJlYWRfc19wYXNzKFZBTFVFIGtsYXNzKQogc3RhdGljIHZvaWQKIHJiX3RocmVhZHB0 cl9leGVjdXRlX2ludGVycnVwdHNfcmVjKHJiX3RocmVhZF90ICp0aCwgaW50IHNjaGVkX2RlcHRo KQogeworICAgIHJiX2F0b21pY190IGludGVycnVwdDsKKwogICAgIGlmIChHRVRfVk0oKS0+bWFp bl90aHJlYWQgPT0gdGgpIHsKIAl3aGlsZSAocmJfc2lnbmFsX2J1ZmZfc2l6ZSgpICYmICF0aC0+ ZXhlY19zaWduYWwpIG5hdGl2ZV90aHJlYWRfeWllbGQoKTsKICAgICB9CiAKICAgICBpZiAodGgt PnJhaXNlZF9mbGFnKSByZXR1cm47CiAKLSAgICB3aGlsZSAodGgtPmludGVycnVwdF9mbGFnKSB7 CisgICAgd2hpbGUgKChpbnRlcnJ1cHQgPSBBVE9NSUNfRVhDSEFOR0UodGgtPmludGVycnVwdF9m bGFnLCAwKSkgIT0gMCkgewogCWVudW0gcmJfdGhyZWFkX3N0YXR1cyBzdGF0dXMgPSB0aC0+c3Rh dHVzOwotCWludCB0aW1lcl9pbnRlcnJ1cHQgPSB0aC0+aW50ZXJydXB0X2ZsYWcgJiAweDAxOwot CWludCBmaW5hbGl6ZXJfaW50ZXJydXB0ID0gdGgtPmludGVycnVwdF9mbGFnICYgMHgwNDsKKwlp bnQgdGltZXJfaW50ZXJydXB0ID0gaW50ZXJydXB0ICYgMHgwMTsKKwlpbnQgZmluYWxpemVyX2lu dGVycnVwdCA9IGludGVycnVwdCAmIDB4MDQ7CiAKIAl0aC0+c3RhdHVzID0gVEhSRUFEX1JVTk5B QkxFOwotCXRoLT5pbnRlcnJ1cHRfZmxhZyA9IDA7CiAKIAkvKiBzaWduYWwgaGFuZGxpbmcgKi8K IAlpZiAodGgtPmV4ZWNfc2lnbmFsKSB7CmRpZmYgLS1naXQgYS92bV9jb3JlLmggYi92bV9jb3Jl LmgKaW5kZXggYzU0MTdkOS4uNjQwYjIwNSAxMDA2NDQKLS0tIGEvdm1fY29yZS5oCisrKyBiL3Zt X2NvcmUuaApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgInZtX29wdHMuaCIKICNpbmNsdWRl ICJpZC5oIgogI2luY2x1ZGUgIm1ldGhvZC5oIgorI2luY2x1ZGUgImF0b21pYy5oIgogCiAjaWYg ICBkZWZpbmVkKF9XSU4zMikKICNpbmNsdWRlICJ0aHJlYWRfd2luMzIuaCIKQEAgLTQzMCw3ICs0 MzEsNyBAQCB0eXBlZGVmIHN0cnVjdCByYl90aHJlYWRfc3RydWN0IHsKICAgICBWQUxVRSB0aHJv d25fZXJyaW5mbzsKICAgICBpbnQgZXhlY19zaWduYWw7CiAKLSAgICBpbnQgaW50ZXJydXB0X2Zs YWc7CisgICAgcmJfYXRvbWljX3QgaW50ZXJydXB0X2ZsYWc7CiAgICAgcmJfdGhyZWFkX2xvY2tf dCBpbnRlcnJ1cHRfbG9jazsKICAgICBzdHJ1Y3QgcmJfdW5ibG9ja19jYWxsYmFjayB1bmJsb2Nr OwogICAgIFZBTFVFIGxvY2tpbmdfbXV0ZXg7CkBAIC02ODcsOSArNjg4LDkgQEAgZXh0ZXJuIHJi X3ZtX3QgKnJ1YnlfY3VycmVudF92bTsKICNlcnJvciAidW5zdXBwb3J0ZWQgdGhyZWFkIG1vZGVs IgogI2VuZGlmCiAKLSNkZWZpbmUgUlVCWV9WTV9TRVRfSU5URVJSVVBUKHRoKSAoKHRoKS0+aW50 ZXJydXB0X2ZsYWcgfD0gMHgwMikKLSNkZWZpbmUgUlVCWV9WTV9TRVRfVElNRVJfSU5URVJSVVBU KHRoKSAoKHRoKS0+aW50ZXJydXB0X2ZsYWcgfD0gMHgwMSkKLSNkZWZpbmUgUlVCWV9WTV9TRVRf RklOQUxJWkVSX0lOVEVSUlVQVCh0aCkgKCh0aCktPmludGVycnVwdF9mbGFnIHw9IDB4MDQpCisj ZGVmaW5lIFJVQllfVk1fU0VUX1RJTUVSX0lOVEVSUlVQVCh0aCkJCUFUT01JQ19PUigodGgpLT5p bnRlcnJ1cHRfZmxhZywgMHgwMSkKKyNkZWZpbmUgUlVCWV9WTV9TRVRfSU5URVJSVVBUKHRoKQkJ QVRPTUlDX09SKCh0aCktPmludGVycnVwdF9mbGFnLCAweDAyKQorI2RlZmluZSBSVUJZX1ZNX1NF VF9GSU5BTElaRVJfSU5URVJSVVBUKHRoKQlBVE9NSUNfT1IoKHRoKS0+aW50ZXJydXB0X2ZsYWcs IDB4MDQpCiAjZGVmaW5lIFJVQllfVk1fSU5URVJSVVBURUQodGgpICgodGgpLT5pbnRlcnJ1cHRf ZmxhZyAmIDB4MDIpCiAKIGludCByYl9zaWduYWxfYnVmZl9zaXplKHZvaWQpOwo=