[ruby-core:95566] [Ruby master Bug#16278] Potential memory leak when an hash is used as a key for another hash
From:
merch-redmine@...
Date:
2019-10-26 15:23:30 UTC
List:
ruby-core #95566
SXNzdWUgIzE2Mjc4IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamVyZW15ZXZhbnMwIChKZXJlbXkgRXZh bnMpLg0KDQpTdGF0dXMgY2hhbmdlZCBmcm9tIE9wZW4gdG8gUmVqZWN0ZWQNCg0KY3Jpc3RpYW5n cmVjbyAoQ3Jpc3RpYW4gR3JlY28pIHdyb3RlOg0KPiBIaSBKZXJlbXksIHRoYW5rcyBmb3IgdGhl c2UgZGV0YWlscyENCj4gDQo+IEkgZG9u4oCZdCBrbm93IHRoZSBkZXRhaWxzIG9mIHJ1YnnigJlz IEdDLCBzZWVtcyB0byBtZSBpdCBtaWdodCBiZWhhdmUgdW5wcmVkaWN0YWJseSBzb21ldGltZXMu IEkgZ3Vlc3Mgd2hhdCBjb25mdXNlcyBtZSBub3cgaXMgdGhhdCBhbHRob3VnaCB0aGF0IG9iamVj dCBpcyByZXRhaW5lZCB3ZSBkb27igJl0IG9ic2VydmUgdW5ib3VuZGVkIG1lbW9yeSBncm93dGgg d2hlbiBjYWxsaW5nIHRoZSBtZXRob2QgaW4gYSBsb29wOiBpcyBpdCBldmVudHVhbGx5IGNvbGxl Y3RlZD8gSXMgaXQgc29tZWhvdyByZS11c2VkLCBvciB3aGF0PyANCg0KSXQgaXMgZXZlbnR1YWxs eSBjb2xsZWN0ZWQgd2hlbiBSdWJ5J3MgR0MgY2FuIG5vIGxvbmdlciBmaW5kIGEgcmVmZXJlbmNl IHRvIGl0LiAgVGhlIHJlYXNvbiBpdCBtYXkgYmUgcmV0YWluZWQgZXZlbiB0aG91Z2ggdGhlcmUg aXMgbm8gZGlyZWN0IHJlZmVyZW5jZSB0byBpdCBpbiBSdWJ5IGlzIHRoYXQgcG9pbnRlcnMgdG8g dGhlIG9iamVjdCBtYXkgc3RpbGwgZXhpc3Qgc29tZXdoZXJlIG9uIHRoZSB0aGUgQy9SdWJ5IHN0 YWNrLiAgUnVieSdzIEdDIGlzIGNvbnNlcnZhdGl2ZSwgcGFydCBvZiB0aGUgc2NhbiBmb3Igb2Jq ZWN0cyBpcyBqdXN0IGxvb2tpbmcgYXQgYXQgc3RhY2sgbWVtb3J5LCBhbmQgaWYgYW55IG1lbW9y eSBjb3VsZCBiZSBjb25zaWRlcmVkIGEgcG9pbnRlciB0byBhIFJ1Ynkgb2JqZWN0LCB0aGF0IFJ1 Ynkgb2JqZWN0IGlzIHJldGFpbmVkIGR1cmluZyB0aGF0IEdDIHBhc3MuDQoNClRoaXMgY29uc2Vy dmF0aXZlIEdDIGlzIG5lZWRlZCB0byBtYWtlIEMgZXh0ZW5zaW9ucyB3b3JrLiAgQyBsb2NhbCB2 YXJpYWJsZXMgbWF5IGhvbGQgcG9pbnRlcnMgdG8gUnVieSBvYmplY3RzLCBhbmQgY29sbGVjdGlu ZyB0aGUgUnVieSBvYmplY3RzIHdoaWxlIHRoZXJlIGlzIGEgQyBsb2NhbCB2YXJpYWJsZSBwb2lu dGluZyB0byB0aGVtIGNhbiBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IgKG9mdGVuIGEgc2VnZmF1 bHQpLg0KDQo+IEFub3RoZXIgdGhpbmcgdGhhdCBpbnRyaWd1ZXMgbWUgaXMgdGhhdCB0aGlzIGJl aGF2aW91ciBpcyBub3QgYWx3YXlzIGNvbnNpc3RlbnQ6IGl0IG1pZ2h0IHZhcnkgYWNyb3NzIGRp ZmZlcmVudCBydWJ5IGJ1aWxkcyAoeW91IG1lbnRpb25lZCB0aGF0IG1lbW9yeSBsYXlvdXQgYW5k IGNvbXBpbGVyIG9wdGltaXNhdGlvbnMgbWlnaHQgYWZmZWN0IHRoZSBvdXRwdXQpIGFuZCBpcyBh bHNvIHN1YnRseSBpbmZsdWVuY2VkIGJ5IGNvZGUgY2hhbmdlcy4gRm9yIGV4YW1wbGUsIGlmIEkg YWRkIHRoaXMgbGluZSBgcHV0cyBPYmplY3RTcGFjZS5jb3VudF9vYmplY3RzWzpUX0hBU0hdYCBq dXN0IGFmdGVyIHRoZSBjYWxsIHRvIGBjcmVhdGVgIHRoZW4gYGg0YCBpcyBhbG1vc3QgbmV2ZXIg Zm91bmQgYWZ0ZXIgR0MgKG9yIGl0cyByZWZlcmVuY2UgaXMgZm91bmQgYXNzb2NpYXRlZCB0byBh bm90aGVyIG9iamVjdCkuIE5vdCBzdXJlIHdoeSB0aGlzIGhhcHBlbnMgdGhvdWdoIQ0KDQpJdCBo YXBwZW5zIGJlY2F1c2UgdGhlIG1lbW9yeSBsYXlvdXQgY2hhbmdlZCwgYW5kIHRoZXJlIGFyZSBu byBsb25nZXIgbG9jYXRpb25zIGluIG1lbW9yeSBvbiB0aGUgc3RhY2sgdGhhdCBwb2ludCB0byB0 aGUgb2JqZWN0cy4NCg0KPiBub2J1IChOb2J1eW9zaGkgTmFrYWRhKSB3cm90ZToNCj4gPiBBZGRp bmcgdGhpcyBtZXRob2QgYW5kIGNhbGxpbmcgaXQgYWZ0ZXIgYGNyZWF0ZWAgY2xlYXJzIHRoZSBv dXRwdXQuDQo+ID4gDQo+ID4gYGBgcnVieQ0KPiA+IGRlZiBnYXJiYWdlDQo+ID4gICBoMSA9IGgy ID0gaDMgPSBoNCA9IGg1ID0gaDYgPSBoNyA9IGg4ID0gaDkgPSBoMTAgPSBuaWwNCj4gPiBlbmQN Cj4gPiBgYGANCj4gPiANCj4gPiBTbyBhIOKAnHNoYWRvd+KAnSBzZWVtcyBzdGF5aW5nIG9uIHRo ZSBWTSBzdGFjay4NCj4gDQo+IEhleSBOb2J1LCB3aGF0IGlzIGdvaW5nIG9uIGhlcmU/IFdoYXQg bWVhbnMgdGhhdCBhIHNoYWRvdyBpcyByZXRhaW5lZCBvbiB0aGUgc3RhY2s/DQoNCkl0IGp1c3Qg bWVhbnMgdGhlcmUgYXJlIGxvY2F0aW9ucyBpbiBtZW1vcnkgb24gdGhlIHN0YWNrIHRoYXQgcG9p bnQgdG8gdGhlIFJ1Ynkgb2JqZWN0cy4gIEJ5IGNhbGxpbmcgYW5vdGhlciBtZXRob2QgdGhhdCBz ZXRzIGEgYnVuY2ggb2YgbG9jYWwgdmFyaWFibGVzLCB0aGUgbG9jYXRpb25zIGluIG1lbW9yeSB0 aGF0IHByZXZpb3VzbHkgcG9pbnRlZCB0byB0aGUgaGFzaGVzIG5vdyBhcmUgbW9kaWZpZWQgdG8g Y29udGFpbiBgbmlsYCAoYFFuaWxgIGluIEMsIDB4NCBvciAweDggZGVwZW5kaW5nIG9uIHByb2Nl c3NvciB0eXBlKS4gIFNpbmNlIG5vIGxvY2F0aW9ucyBpbiBtZW1vcnkgcG9pbnQgdG8gdGhlIGhh c2hlcywgdGhlIGhhc2hlcyBjYW4gdGhlbiBiZSBHQ2VkLg0KDQpIb3BlZnVsbHkgdGhhdCBwcm92 aWRlcyBhbiBhZGVxdWF0ZSBleHBsYW5hdGlvbiBmb3IgUnVieSdzIEdDLiAgRm9yIG1vcmUgYmFj a2dyb3VuZCwgcGxlYXNlIHJldmlldyBzb21lIGNvbmZlcmVuY2UgcHJlc2VudGF0aW9ucyBieSBA a28xIDogIGh0dHA6Ly93d3cuYXRkb3QubmV0L35rbzEvYWN0aXZpdGllcy8uICBJJ20gZ29pbmcg dG8gY2xvc2UgdGhpcyBub3cuICBQbGVhc2Ugb25seSByZW9wZW4gaWYgeW91IGNhbiBzaG93IGEg Y2FzZSB3aXRoIHVuYm91bmRlZCBtZW1vcnkgZ3Jvd3RoLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpCdWcgIzE2Mjc4OiBQb3RlbnRpYWwgbWVtb3J5IGxlYWsg d2hlbiBhbiBoYXNoIGlzIHVzZWQgYXMgYSBrZXkgZm9yIGFub3RoZXIgaGFzaA0KaHR0cHM6Ly9i dWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE2Mjc4I2NoYW5nZS04MjM0Nw0KDQoqIEF1dGhvcjog Y3Jpc3RpYW5ncmVjbyAoQ3Jpc3RpYW4gR3JlY28pDQoqIFN0YXR1czogUmVqZWN0ZWQNCiogUHJp b3JpdHk6IE5vcm1hbA0KKiBBc3NpZ25lZTogDQoqIFRhcmdldCB2ZXJzaW9uOiANCiogcnVieSAt djogcnVieSAyLjYuNXAxMTQgKDIwMTktMTAtMDEgcmV2aXNpb24gNjc4MTIpIFt4ODZfNjQtZGFy d2luMThdDQoqIEJhY2twb3J0OiAyLjU6IFVOS05PV04sIDIuNjogVU5LTk9XTg0KLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KSGksDQoNCkkndmUgYmVlbiBoaXR0aW5n IHdoYXQgc2VlbXMgdG8gYmUgYSBtZW1vcnkgbGVhay4NCg0KV2hlbiBhbiBoYXNoIGlzIHVzZWQg YXMga2V5IGZvciBhbm90aGVyIGhhc2gsIHRoZSBmb3JtZXIgb2JqZWN0IHdpbGwgYmUgcmV0YWlu ZWQgZXZlbiBhZnRlciBtdWx0aXBsZSBHQyBydW5zLg0KDQpUaGUgZm9sbG93aW5nIGNvZGUgc25p cHBldCBkZW1vbnN0cmF0ZXMgaG93IHRoZSBoYXNoIGB7OmEgPT4gMX1gICh3aGljaCBpcyBuZXZl ciB1c2VkIG91dHNpZGUgdGhlIHNjb3BlIG9mIGBjcmVhdGVgKSBpcyByZXRhaW5lZCBldmVuIGFm dGVyIDEwIEdDIHJ1bnMgKGBmaW5kYCB3aWxsIGxvb2sgZm9yIGFuIG9iamVjdCB3aXRoIGEgZ2l2 ZW4gYG9iamVjdF9pZGAgb24gaGVhcCkuDQoNCg0KYGBgcnVieQ0KIyBmcm96ZW5fc3RyaW5nX2xp dGVyYWw6IHRydWUNCg0KZGVmIGNyZWF0ZQ0KICBoID0ge3s6YSA9PiAxfSA9PiAyfQ0KICBoLmtl eXMuZmlyc3Qub2JqZWN0X2lkDQplbmQNCg0KZGVmIGZpbmQob2JqZWN0X2lkKQ0KICBPYmplY3RT cGFjZS5lYWNoX29iamVjdChIYXNoKS5hbnk/e3xofCBoLm9iamVjdF9pZCA9PSBvYmplY3RfaWR9 ID8gMSA6IDANCmVuZA0KDQoNCmxlYWtlZCA9IGNyZWF0ZQ0KDQoxMC50aW1lcyBkbw0KICBHQy5z dGFydChmdWxsX21hcms6IHRydWUsIGltbWVkaWF0ZV9zd2VlcDogdHJ1ZSkNCmVuZA0KDQpleGl0 IGZpbmQobGVha2VkKQ0KYGBgDQoNClRoaXMgY29kZSBzbmlwcGV0IGlzIGV4cGVjdGVkIHRvIGV4 aXQgd2l0aCBgMGAgd2hpbGUgaXQgZXhpdHMgd2l0aCBgMWAgaW4gbXkgdGVzdHMuIEkndmUgdGVz dGVkIHRoaXMgb24gbXVsdGlwbGUgcmVjZW50IHJ1YnkgdmVyc2lvbnMgYW5kIE9TcywgZWl0aGVy IGxvY2FsbHkgKE9TWCB3aXRoIGhvbWVicmV3KSBvciBpbiBkaWZmZXJlbnQgQ0lzIChlLmcuIFto ZXJlXShodHRwczovL2dpdGh1Yi5jb20vY3Jpc3RpYW5ncmVjby9ydWJ5LWhhc2gtbGVhay9jb21t aXQvMjg1ZTU4NmI3MTkzMTA0OTg5ZjU5YjkyNTc5ZmU4ZjI1NzcwMTQxZS9jaGVja3M/Y2hlY2tf c3VpdGVfaWQ9Mjc4NzExNTY2KSkuDQoNCkNhbiB5b3UgcGxlYXNlIGhlbHAgdW5kZXJzdGFuZCB3 aGF0J3MgZ29pbmcgb24gaGVyZT8gVGhhbmtzIQ0KDQoNCg0KLS0gDQpodHRwczovL2J1Z3MucnVi eS1sYW5nLm9yZy8NCgpVbnN1YnNjcmliZTogPG1haWx0bzpydWJ5LWNvcmUtcmVxdWVzdEBydWJ5 LWxhbmcub3JnP3N1YmplY3Q9dW5zdWJzY3JpYmU+CjxodHRwOi8vbGlzdHMucnVieS1sYW5nLm9y Zy9jZ2ktYmluL21haWxtYW4vb3B0aW9ucy9ydWJ5LWNvcmU+Cg==