From: mame@... Date: 2015-02-13T13:12:27+00:00 Subject: [ruby-core:68113] [Ruby trunk - Bug #10853] inspect.claer dumps core Issue #10853 has been updated by Yusuke Endoh. Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED ---------------------------------------- Bug #10853: inspect.claer dumps core https://bugs.ruby-lang.org/issues/10853#change-51492 * Author: Yusuke Endoh * Status: Closed * Priority: Normal * Assignee: Yusuke Endoh * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux] * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED ---------------------------------------- ~~~ $ ruby -e 'inspect.clear' *** Error in `ruby': munmap_chunk(): invalid pointer: 0x00007fd20ed64fe7 *** Aborted (core dumped) ~~~ str_discard attempts to free a C literal string, which causes core dump. It must check STR_NOFREE. ~~~ diff --git a/string.c b/string.c index 5de795a..d810213 100644 --- a/string.c +++ b/string.c @@ -1662,7 +1662,7 @@ static inline void str_discard(VALUE str) { str_modifiable(str); - if (!STR_SHARED_P(str) && !STR_EMBED_P(str)) { + if (!STR_EMBED_P(str) && !FL_TEST(str, STR_SHARED|STR_NOFREE)) { ruby_sized_xfree(STR_HEAP_PTR(str), STR_HEAP_SIZE(str)); RSTRING(str)->as.heap.ptr = 0; RSTRING(str)->as.heap.len = 0; ~~~ -- Yusuke Endoh -- https://bugs.ruby-lang.org/