Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native 64-bit Linux build #142

Closed
wants to merge 34 commits into from
Closed

Native 64-bit Linux build #142

wants to merge 34 commits into from

Conversation

zsx
Copy link

@zsx zsx commented Aug 31, 2013

This adds native linux 64-bit supports. Tested with github/rebol-test, three progressions and no regression agains master 32-bit found:

--- r_2_101_0_4_4_22C633_4E5726.log 2013-08-31 10:01:12.003341307 -0400
+++ r_2_101_0_4_40_183F68_4E5726.log    2013-08-28 09:39:34.563339334 -0400
@@ -4849,13 +4849,13 @@
 [0.1 == round/half-down/to 0.15 0.1] "succeeded"
 [0.2 == round/half-down/to 0.15001 0.1] "succeeded"
 [0.5 == round/half-down/to 0.55 0.1] "succeeded"
-[0.6 == round/half-down/to 0.55001 0.1] "failed"
+[0.6 == round/half-down/to 0.55001 0.1] "succeeded"
 [0.5 == round/half-down/to 0.75 0.5] "succeeded"
 [1.0 == round/half-down/to 0.75001 0.5] "succeeded"
 [-0.1 == round/half-down/to -0.15 0.1] "succeeded"
 [-0.2 == round/half-down/to -0.15001 0.1] "succeeded"
 [-0.5 == round/half-down/to -0.55 0.1] "succeeded"
-[-0.6 == round/half-down/to -0.55001 0.1] "failed"
+[-0.6 == round/half-down/to -0.55001 0.1] "succeeded"
 [-0.5 == round/half-down/to -0.75 0.5] "succeeded"
 [-1.0 == round/half-down/to -0.75001 0.5] "succeeded"
 [0 = sign? 0] "succeeded"
@@ -5825,7 +5825,7 @@
    error? try blk
 ] "succeeded"
 [error? try [apply 'type?/word []]] "succeeded"
-[same? :add attempt [apply does [return/redo :add] []]] "failed"
+[same? :add attempt [apply does [return/redo :add] []]] "succeeded"
 [2 == do does [return apply :do [:add 1 1] 4 4]] "failed"
 [1 == apply :subtract [2 1]] "succeeded"
 [1 == apply :- [2 1]] "succeeded"
@@ -8463,12 +8463,12 @@
 ] "failed, error was caused in the test code"
 [equal? read write clipboard:// c: "test" c] "failed, error was caused in the test code"

-system/version: 2.101.0.4.4
-code-checksum: #{22C633E24BFD4FDBE04A6098E41BD954C3B7D04C}
+system/version: 2.101.0.4.40
+code-checksum: #{183F684918FA91FE87D599821E541D30651FBE9D}
 test-checksum: #{4E5726B3CE4645AC5EAB8AF08F677090E0998DD3}
 Total: 4696
-Succeeded: 4211
-Test-failures: 161
+Succeeded: 4214
+Test-failures: 158
 Crashes: 16
 Dialect-failures: 0
 Skipped: 308

@ladislav
Copy link
Contributor

Log diff between current master 0.4.4 and this update when the target is 0.4.40 shows one progression here:

[10.10.10 == divide 1.1.1 .1] progression, succeeded

Summary:

new-successes: 0
new-failures: 0
new-crashes: 0
progressions: 1
regressions: 0
removed: 0
unchanged: 4695
total: 4696

gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

@zsx
Copy link
Author

zsx commented Aug 31, 2013

I am using gcc (GCC) 4.8.1 20130725 (prerelease) on Archlinux

@ladislav
Copy link
Contributor

ladislav commented Sep 1, 2013

I used the same compiler for the current master and for the updated code and obtained no difference comparing the current master and this update when the target was 0.4.4 for both.

Thus, the patches are verified to not cause regressions in 0.4.4.

Also verified to not cause regressions in 0.3.1

@ladislav
Copy link
Contributor

ladislav commented Sep 1, 2013

Also, perhaps interestingly, my http://www.fm.tul.cz/~ladislav/rebol/bench.r runs faster in 0.4.40 than in 0.4.4 although the speed increase is small (+5% to +10%)

@earl
Copy link
Contributor

earl commented Sep 2, 2013

I'm happy to report two more encouraging results: with this series of patches, R3 builds, runs, and tests fine on Linux on Itanium (IA64) as well as Linux on Alpha (AXP).

@onetom
Copy link

onetom commented Sep 3, 2013

On a Mac, I got 1 regression:

[strict-equal? #[url! ""] to url! ""] crashed
$ r3 log-diff.r r_2_101_0_4_4_C8BB7C_4E5726.log r_2_101_0_4_40_70D367_4E5726.log
Done.

new-successes: 0
new-failures: 0
new-crashes: 0
progressions: 0
regressions: 1
removed: 0
unchanged: 4695
total: 4696

$ make clean && make make OS_ID=0.4.40 && make prep && time make
...

$ file r3
r3: Mach-O 64-bit executable x86_64

@onetom
Copy link

onetom commented Sep 4, 2013

@ladislav [strict-equal? #[url! ""] to url! ""] crashed was the regression (that's what i got when i /usr/bin/diff-ed the filtered test logs, since the log-diff didn't tell it to me as u can see)

not sure what do you mean by "This looks premature", but having this patch would allow us to run rebol on 64bit linux cloud servers without the need of installing the ~100MB ia32-libs dependency.
that alone worth to integrate it, imho, even if there is nothing else 64bit about it...

@onetom
Copy link

onetom commented Sep 5, 2013

@ladislav okay, it's just bad UX on github; they should emphasize the topic more in the comment header.
i didn't get you were commenting on a specific commit, not on the whole pull request. thanks!

@@ -368,7 +368,11 @@

CHECK_STACK(&series);

#ifdef __LP64__
if (((REBU64)length * wide) > MAX_I64) Trap0(RE_NO_MEMORY);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Recovering an earlier comment of Ladislav:

"The limit change looks premature, since the implementation of series hasn't changed yet."

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. So you think we should keep it as is until we change the
implementation of series? What I was thinking was that, even with current
series implemention and this patch, you could have a larger series.

Best Regards

Shixin Zeng

On Mon, Sep 9, 2013 at 2:48 PM, Andreas Bolka [email protected]:

In src/core/m-pools.c:

@@ -368,7 +368,11 @@

CHECK_STACK(&series);

+#ifdef LP64

  • if (((REBU64)length * wide) > MAX_I64) Trap0(RE_NO_MEMORY);

Recovering an earlier comment of Ladislavhttps://github.com/zsx/r3/commit/bebdda231deb8a6b068eb421f33c60912944ee7c#commitcomment-4014963
:

"The limit change looks premature, since the implementation of series
hasn't changed yet."


Reply to this email directly or view it on GitHubhttps://github.com//pull/142/files#r6246850
.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that you obtain a crash trying to allocate a larger series if the limit isn't kept.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I will remove this commit, even though I still don't quite get where
exactly it could crash due to memory limit.

Best Regards

Shixin Zeng

On Tue, Sep 10, 2013 at 4:12 AM, Ladislav Mecir [email protected]:

In src/core/m-pools.c:

@@ -368,7 +368,11 @@

CHECK_STACK(&series);

+#ifdef LP64

  • if (((REBU64)length * wide) > MAX_I64) Trap0(RE_NO_MEMORY);

I think that you obtain a crash trying to allocate a larger series in the
present code base.


Reply to this email directly or view it on GitHubhttps://github.com//pull/142/files#r6259703
.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One example which crashes (crashed) for me:

array 134'217'727

(With the limit adjustment now removed, this again just causes a "not enough memory" internal error.)

@zsx
Copy link
Author

zsx commented Sep 10, 2013

Since I don't have a Mac, I am afraid that I won't be able to fix this.

Best Regards

Shixin Zeng

On Mon, Sep 2, 2013 at 8:22 PM, onetom [email protected] wrote:

On a Mac, I got 1 regression:
[strict-equal? #[url! ""] to url! ""] crashed

$ r3 log-diff.r r_2_101_0_4_4_C8BB7C_4E5726.log
r_2_101_0_4_40_70D367_4E5726.log
Done.

new-successes: 0
new-failures: 0
new-crashes: 0
progressions: 0
regressions: 1
removed: 0
unchanged: 4695
total: 4696

$ make clean && make make OS_ID=0.4.40 && make prep && time make
...
0000000005614542 - 00 0000 OPT radr://5614542
ls -l r3
-rwxr-xr-x 1 onetom staff 569444 Sep 3 08:19 r3

real 0m12.364s
...
$ file r3
r3: Mach-O 64-bit executable x86_64


Reply to this email directly or view it on GitHubhttps://github.com//pull/142#issuecomment-23684014
.

@ladislav
Copy link
Contributor

Zeng, you "lost" the "add a new platform 0.4.40 for linux_x64" commit when updating the pull request.

@ladislav
Copy link
Contributor

In the sys-value.h header file, REBALL is described as "All bits of value fields:". The REBALL type definition is not compatible with that when LP64 is defined. However, as I checked, the discrepancy does not cause any harm except for making the description invalid.

@zsx
Copy link
Author

zsx commented Sep 17, 2013

REBALL is easy to be fixed. We just need to change it to uintptr_t bits[3].

@ladislav
Copy link
Contributor

Well, it certainly isn't (too) hard to fix, but this fix might break s-crc.c, I am afraid.

When the node is allocated from the system pool, it's memset to zero,
but not if it's allocated from one of the memory pools
Such that they are better aligned with their natural memory boundary.

The order is: long long, pointer, long, int, short, char
Or the body field will be garbage, and cause recycling a module! to
crash.
@ladislav
Copy link
Contributor

Also, #147 is worth consulting, since it both suppresses compiler warnings for 32-bit cases and can do the same service for 64-bit case where applicable.

@ladislav
Copy link
Contributor

ladislav commented Oct 3, 2013

This looks unbelievable, but 32-bit R3 actually became slower (less than 5%) after your last batch of changes.

While speed of 64-bit R3 did not change noticeably.

@zsx
Copy link
Author

zsx commented Oct 3, 2013

Compared with the https://github.com/rebol/rebol master?

Best Regards

Shixin Zeng

On Thu, Oct 3, 2013 at 8:03 AM, Ladislav Mecir [email protected]:

This looks unbelievable, but 32-bit R3 actually became slower (less than
5%) after your last batch of changes.


Reply to this email directly or view it on GitHubhttps://github.com//pull/142#issuecomment-25614779
.

@ladislav
Copy link
Contributor

ladislav commented Oct 3, 2013

No, I just had your 64-master state recorded before you made the last batch of changes including struct rearrangement and I compared speed of the older 64-master with the speed of the new 64-master containing your last batch of changes including struct rearrangement.

Best Regards, Ladislav

@ladislav
Copy link
Contributor

ladislav commented Oct 9, 2013

I guess I know why the struct rearrangement does not have positive effect: there are the #pragma pack(4) directives preceding many struct declarations and they were most probably meant for 32-bit programs. Curiously enough, I guess that they don't have any effect on 32-bit programs.

@zsx
Copy link
Author

zsx commented Oct 14, 2013

I think that should actually be the reason it should improve the
performance. When it's packed at 4, 64-bit types might not aligned with
their natural boundaries. With the struct rearrangement, these types should
be aligned to their natural boundaries and still packed at 4.

Best Regards

Shixin Zeng

On Wed, Oct 9, 2013 at 12:52 PM, Ladislav Mecir [email protected]:

I guess I know why the struct rearrangement does not have positive effect:
there are the #pragma pack(4) directives preceding many struct declarations
and they were most probably meant for 32-bit programs. Curiously enough, I
guess that they don't have any effect on 32-bit programs.


Reply to this email directly or view it on GitHubhttps://github.com//pull/142#issuecomment-25987894
.

@ladislav
Copy link
Contributor

Aha, well, but there was no performance improvement as I noted above, and a slow down in 32-bit version, so this is not what you expected.

Best Regards

Ladislav

@zsx
Copy link
Author

zsx commented Oct 15, 2013

Yep, that's kind of surprising. I'll take a look when I have time.

Best Regards

Shixin Zeng

On Mon, Oct 14, 2013 at 5:28 PM, Ladislav Mecir [email protected]:

Aha, well, but there was no performance improvement as I noted above, and
a slow down in 32-bit version, so this is not what you expected.

Best Regards

Ladislav


Reply to this email directly or view it on GitHubhttps://github.com//pull/142#issuecomment-26290378
.

@ladislav ladislav mentioned this pull request Dec 20, 2013
@carls
Copy link
Contributor

carls commented Feb 17, 2014

See newer #178 pull for latest 64 bit support. Closing this pull.

@carls carls closed this Feb 17, 2014
@earl earl mentioned this pull request Mar 10, 2014
zsx added a commit to zsx/r3 that referenced this pull request May 13, 2014
It will confuse Expand_Series expects "tail" to be the actual size, and
cause a read beyond the allocated memory, or heap buffer overflow found
by address sanitizer of GCC:
=================================================================
==10856==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62a00000b201 at pc 0x47df61 bp 0x7fffffff2ca0 sp 0x7fffffff2c98
READ of size 1 at 0x62a00000b201 thread T0
    #0 0x47df60 in Expand_Series ../src/core/m-series.c:145
    #1 0x47e5a7 in Extend_Series ../src/core/m-series.c:187
    #2 0x466e0c in Scan_Quote ../src/core/l-scan.c:462
    #3 0x46a797 in Scan_Token ../src/core/l-scan.c:918
    #4 0x46e263 in Scan_Block ../src/core/l-scan.c:1188
    #5 0x46e722 in Scan_Code ../src/core/l-scan.c:1548
    #6 0x46e886 in Scan_Source ../src/core/l-scan.c:1568
    #7 0x4cb85c in Make_Block_Type ../src/core/t-block.c:306
    #8 0x4cd1b8 in T_Block ../src/core/t-block.c:608
    #9 0x4d042e in T_Datatype ../src/core/t-datatype.c:92
    #10 0x42e080 in Do_Act ../src/core/c-function.c:338
    #11 0x42e7e5 in Do_Action ../src/core/c-function.c:396
    #12 0x413628 in Do_Next ../src/core/c-do.c:884
    #13 0x41309b in Do_Next ../src/core/c-do.c:858
    #14 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #15 0x482dd2 in N_case ../src/core/n-control.c:349
    #16 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #17 0x413628 in Do_Next ../src/core/c-do.c:884
    #18 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #19 0x42e869 in Do_Function ../src/core/c-function.c:415
    #20 0x413628 in Do_Next ../src/core/c-do.c:884
    #21 0x41309b in Do_Next ../src/core/c-do.c:858
    #22 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #23 0x42e869 in Do_Function ../src/core/c-function.c:415
    #24 0x413628 in Do_Next ../src/core/c-do.c:884
    #25 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #26 0x414152 in Do_Next ../src/core/c-do.c:939
    #27 0x48201c in N_all ../src/core/n-control.c:261
    #28 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #29 0x413628 in Do_Next ../src/core/c-do.c:884
    #30 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #31 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #32 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #33 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #34 0x413628 in Do_Next ../src/core/c-do.c:884
    #35 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #36 0x42e869 in Do_Function ../src/core/c-function.c:415
    #37 0x413628 in Do_Next ../src/core/c-do.c:884
    #38 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #39 0x414152 in Do_Next ../src/core/c-do.c:939
    #40 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #41 0x48459c in N_if ../src/core/n-control.c:619
    #42 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #43 0x413628 in Do_Next ../src/core/c-do.c:884
    #44 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #45 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #46 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #47 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #48 0x413628 in Do_Next ../src/core/c-do.c:884
    #49 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #50 0x42e869 in Do_Function ../src/core/c-function.c:415
    #51 0x418fb4 in Apply_Block ../src/core/c-do.c:1474
    #52 0x4824fb in N_apply ../src/core/n-control.c:295
    rebol#53 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#54 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#55 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#56 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#57 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#58 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#59 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#60 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#61 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#62 0x483eff in N_do ../src/core/n-control.c:523
    rebol#63 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#64 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#65 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#66 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#67 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#68 0x48459c in N_if ../src/core/n-control.c:619
    rebol#69 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#70 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#71 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#72 0x48f8cc in Loop_Integer ../src/core/n-loop.c:130
    rebol#73 0x49314d in N_repeat ../src/core/n-loop.c:631
    rebol#74 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#75 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#76 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#77 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    rebol#78 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#79 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#80 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#81 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#82 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#83 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#84 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#85 0x418fb4 in Apply_Block ../src/core/c-do.c:1474
    rebol#86 0x4824fb in N_apply ../src/core/n-control.c:295
    rebol#87 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#88 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#89 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#90 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#91 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#92 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#93 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#94 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#95 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#96 0x483eff in N_do ../src/core/n-control.c:523
    rebol#97 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#98 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#99 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#100 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#101 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#102 0x48459c in N_if ../src/core/n-control.c:619
    rebol#103 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#104 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#105 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#106 0x48f8cc in Loop_Integer ../src/core/n-loop.c:130
    rebol#107 0x49314d in N_repeat ../src/core/n-loop.c:631
    rebol#108 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#109 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#110 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#111 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    rebol#112 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#113 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#114 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#115 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#116 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#117 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#118 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#119 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#120 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#121 0x484cf1 in N_switch ../src/core/n-control.c:716
    rebol#122 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#123 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#124 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#125 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#126 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#127 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#128 0x48459c in N_if ../src/core/n-control.c:619
    rebol#129 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#130 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#131 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#132 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#133 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#134 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#135 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#136 0x484280 in N_either ../src/core/n-control.c:595
    rebol#137 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#138 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#139 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#140 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#141 0x419631 in Apply_Function ../src/core/c-do.c:1518
    rebol#142 0x419918 in Apply_Func ../src/core/c-do.c:1545
    rebol#143 0x48d102 in N_wake_up ../src/core/n-io.c:415
    rebol#144 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#145 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#146 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#147 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#148 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#149 0x492b66 in N_loop ../src/core/n-loop.c:590
    rebol#150 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#151 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#152 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#153 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#154 0x419631 in Apply_Function ../src/core/c-do.c:1518
    rebol#155 0x419918 in Apply_Func ../src/core/c-do.c:1545
    rebol#156 0x42fef7 in Awake_System ../src/core/c-port.c:198
    rebol#157 0x43012a in Wait_Ports ../src/core/c-port.c:231
    rebol#158 0x48cd62 in N_wait ../src/core/n-io.c:374
    rebol#159 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#160 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#161 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#162 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#163 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#164 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#165 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#166 0x4929a7 in N_forever ../src/core/n-loop.c:527
    rebol#167 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#168 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#169 0x4152ff in Try_Block ../src/core/c-do.c:1077
    rebol#170 0x48507e in N_try ../src/core/n-control.c:740
    rebol#171 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#172 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#173 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#174 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#175 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#176 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#177 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#178 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#179 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#180 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#181 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#182 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#183 0x48459c in N_if ../src/core/n-control.c:619
    rebol#184 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#185 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#186 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#187 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#188 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#189 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#190 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#191 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#192 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#193 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#194 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#195 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#196 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#197 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#198 0x48201c in N_all ../src/core/n-control.c:261
    rebol#199 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#200 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#201 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#202 0x491abc in Loop_Each ../src/core/n-loop.c:410
    rebol#203 0x492a6c in N_foreach ../src/core/n-loop.c:546
    rebol#204 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#205 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#206 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#207 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#208 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#209 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#210 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#211 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#212 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#213 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#214 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#215 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#216 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#217 0x48459c in N_if ../src/core/n-control.c:619
    rebol#218 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#219 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#220 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#221 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    rebol#222 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#223 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#224 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#225 0x48201c in N_all ../src/core/n-control.c:261
    rebol#226 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#227 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#228 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#229 0x491abc in Loop_Each ../src/core/n-loop.c:410
    rebol#230 0x492a6c in N_foreach ../src/core/n-loop.c:546
    rebol#231 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#232 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#233 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#234 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#235 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#236 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#237 0x48459c in N_if ../src/core/n-control.c:619
    rebol#238 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#239 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#240 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#241 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#242 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#243 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#244 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#245 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#246 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#247 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#248 0x48459c in N_if ../src/core/n-control.c:619
    rebol#249 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#250 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#251 0x414825 in Do_Blk ../src/core/c-do.c:1010

0x62a00000b201 is located 1 bytes to the right of 20480-byte region [0x62a000006200,0x62a00000b200)
allocated by thread T0 here:
    #0 0x7ffff6f58b1f in malloc (/usr/lib/libasan.so.1+0x54b1f)
    #1 0x47924a in Make_Mem ../src/core/m-pools.c:121
    #2 0x47a9ff in Make_Series ../src/core/m-pools.c:406
    #3 0x4aee84 in Make_Unicode ../src/core/s-make.c:59
    #4 0x4bb797 in Init_Mold ../src/core/s-mold.c:1425
    #5 0x40da64 in Init_Core ../src/core/b-init.c:940
    #6 0x4055e0 in RL_Init ../src/core/a-lib.c:124
    #7 0x580aa2 in main ../src/os/host-main.c:154
    #8 0x7ffff5719fff in __libc_start_main (/usr/lib/libc.so.6+0x1ffff)

SUMMARY: AddressSanitizer: heap-buffer-overflow ../src/core/m-series.c:145 Expand_Series
Shadow bytes around the buggy address:
  0x0c547fff95f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c547fff9640:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9650: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9660: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9670: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9680: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9690: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Contiguous container OOB:fc
  ASan internal:
zsx referenced this pull request in metaeducation/ren-c Jun 21, 2015
It will confuse Expand_Series expects "tail" to be the actual size, and
cause a read beyond the allocated memory, or heap buffer overflow found
by address sanitizer of GCC:
=================================================================
==10856==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62a00000b201 at pc 0x47df61 bp 0x7fffffff2ca0 sp 0x7fffffff2c98
READ of size 1 at 0x62a00000b201 thread T0
    #0 0x47df60 in Expand_Series ../src/core/m-series.c:145
    #1 0x47e5a7 in Extend_Series ../src/core/m-series.c:187
    rebolsource#2 0x466e0c in Scan_Quote ../src/core/l-scan.c:462
    rebolsource#3 0x46a797 in Scan_Token ../src/core/l-scan.c:918
    #4 0x46e263 in Scan_Block ../src/core/l-scan.c:1188
    #5 0x46e722 in Scan_Code ../src/core/l-scan.c:1548
    rebolsource#6 0x46e886 in Scan_Source ../src/core/l-scan.c:1568
    rebol#7 0x4cb85c in Make_Block_Type ../src/core/t-block.c:306
    #8 0x4cd1b8 in T_Block ../src/core/t-block.c:608
    #9 0x4d042e in T_Datatype ../src/core/t-datatype.c:92
    #10 0x42e080 in Do_Act ../src/core/c-function.c:338
    #11 0x42e7e5 in Do_Action ../src/core/c-function.c:396
    #12 0x413628 in Do_Next ../src/core/c-do.c:884
    #13 0x41309b in Do_Next ../src/core/c-do.c:858
    #14 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #15 0x482dd2 in N_case ../src/core/n-control.c:349
    #16 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#17 0x413628 in Do_Next ../src/core/c-do.c:884
    #18 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#19 0x42e869 in Do_Function ../src/core/c-function.c:415
    #20 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#21 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#22 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#23 0x42e869 in Do_Function ../src/core/c-function.c:415
    #24 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#25 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#26 0x414152 in Do_Next ../src/core/c-do.c:939
    #27 0x48201c in N_all ../src/core/n-control.c:261
    #28 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #29 0x413628 in Do_Next ../src/core/c-do.c:884
    #30 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #31 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #32 0x492a6c in N_foreach ../src/core/n-loop.c:546
    rebol#33 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #34 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#35 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #36 0x42e869 in Do_Function ../src/core/c-function.c:415
    #37 0x413628 in Do_Next ../src/core/c-do.c:884
    #38 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #39 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#40 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#41 0x48459c in N_if ../src/core/n-control.c:619
    #42 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #43 0x413628 in Do_Next ../src/core/c-do.c:884
    #44 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #45 0x491abc in Loop_Each ../src/core/n-loop.c:410
    rebol#46 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #47 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#48 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#49 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #50 0x42e869 in Do_Function ../src/core/c-function.c:415
    #51 0x418fb4 in Apply_Block ../src/core/c-do.c:1474
    #52 0x4824fb in N_apply ../src/core/n-control.c:295
    rebol#53 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #54 0x413628 in Do_Next ../src/core/c-do.c:884
    #55 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #56 0x414152 in Do_Next ../src/core/c-do.c:939
    #57 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #58 0x485388 in N_unless ../src/core/n-control.c:763
    #59 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#60 0x413628 in Do_Next ../src/core/c-do.c:884
    #61 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #62 0x483eff in N_do ../src/core/n-control.c:523
    #63 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #64 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#65 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#66 0x414152 in Do_Next ../src/core/c-do.c:939
    #67 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#68 0x48459c in N_if ../src/core/n-control.c:619
    #69 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #70 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#71 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #72 0x48f8cc in Loop_Integer ../src/core/n-loop.c:130
    #73 0x49314d in N_repeat ../src/core/n-loop.c:631
    #74 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#75 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#76 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #77 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    #78 0x413628 in Do_Next ../src/core/c-do.c:884
    #79 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #80 0x485388 in N_unless ../src/core/n-control.c:763
    #81 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #82 0x413628 in Do_Next ../src/core/c-do.c:884
    #83 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#84 0x42e869 in Do_Function ../src/core/c-function.c:415
    #85 0x418fb4 in Apply_Block ../src/core/c-do.c:1474
    #86 0x4824fb in N_apply ../src/core/n-control.c:295
    #87 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #88 0x413628 in Do_Next ../src/core/c-do.c:884
    #89 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #90 0x414152 in Do_Next ../src/core/c-do.c:939
    #91 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #92 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#93 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #94 0x413628 in Do_Next ../src/core/c-do.c:884
    #95 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #96 0x483eff in N_do ../src/core/n-control.c:523
    #97 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #98 0x413628 in Do_Next ../src/core/c-do.c:884
    #99 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #100 0x414152 in Do_Next ../src/core/c-do.c:939
    #101 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #102 0x48459c in N_if ../src/core/n-control.c:619
    rebol#103 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #104 0x413628 in Do_Next ../src/core/c-do.c:884
    #105 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #106 0x48f8cc in Loop_Integer ../src/core/n-loop.c:130
    #107 0x49314d in N_repeat ../src/core/n-loop.c:631
    #108 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #109 0x413628 in Do_Next ../src/core/c-do.c:884
    #110 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #111 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    #112 0x413628 in Do_Next ../src/core/c-do.c:884
    #113 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #114 0x485388 in N_unless ../src/core/n-control.c:763
    #115 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #116 0x413628 in Do_Next ../src/core/c-do.c:884
    #117 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#118 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#119 0x413628 in Do_Next ../src/core/c-do.c:884
    #120 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #121 0x484cf1 in N_switch ../src/core/n-control.c:716
    #122 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #123 0x413628 in Do_Next ../src/core/c-do.c:884
    #124 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #125 0x42e869 in Do_Function ../src/core/c-function.c:415
    #126 0x413628 in Do_Next ../src/core/c-do.c:884
    #127 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #128 0x48459c in N_if ../src/core/n-control.c:619
    #129 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #130 0x413628 in Do_Next ../src/core/c-do.c:884
    #131 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #132 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#133 0x413628 in Do_Next ../src/core/c-do.c:884
    #134 0x41309b in Do_Next ../src/core/c-do.c:858
    #135 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #136 0x484280 in N_either ../src/core/n-control.c:595
    #137 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #138 0x413628 in Do_Next ../src/core/c-do.c:884
    #139 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #140 0x42e869 in Do_Function ../src/core/c-function.c:415
    #141 0x419631 in Apply_Function ../src/core/c-do.c:1518
    #142 0x419918 in Apply_Func ../src/core/c-do.c:1545
    #143 0x48d102 in N_wake_up ../src/core/n-io.c:415
    #144 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #145 0x413628 in Do_Next ../src/core/c-do.c:884
    #146 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #147 0x4133c9 in Do_Next ../src/core/c-do.c:877
    #148 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #149 0x492b66 in N_loop ../src/core/n-loop.c:590
    #150 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #151 0x413628 in Do_Next ../src/core/c-do.c:884
    #152 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #153 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#154 0x419631 in Apply_Function ../src/core/c-do.c:1518
    rebol#155 0x419918 in Apply_Func ../src/core/c-do.c:1545
    rebol#156 0x42fef7 in Awake_System ../src/core/c-port.c:198
    rebol#157 0x43012a in Wait_Ports ../src/core/c-port.c:231
    #158 0x48cd62 in N_wait ../src/core/n-io.c:374
    rebol#159 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #160 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#161 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#162 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#163 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #164 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#165 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#166 0x4929a7 in N_forever ../src/core/n-loop.c:527
    #167 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #168 0x413628 in Do_Next ../src/core/c-do.c:884
    #169 0x4152ff in Try_Block ../src/core/c-do.c:1077
    #170 0x48507e in N_try ../src/core/n-control.c:740
    rebol#171 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #172 0x413628 in Do_Next ../src/core/c-do.c:884
    #173 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #174 0x414152 in Do_Next ../src/core/c-do.c:939
    #175 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #176 0x4133c9 in Do_Next ../src/core/c-do.c:877
    #177 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #178 0x4133c9 in Do_Next ../src/core/c-do.c:877
    #179 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #180 0x42e869 in Do_Function ../src/core/c-function.c:415
    #181 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#182 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#183 0x48459c in N_if ../src/core/n-control.c:619
    #184 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #185 0x413628 in Do_Next ../src/core/c-do.c:884
    #186 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #187 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#188 0x413628 in Do_Next ../src/core/c-do.c:884
    #189 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#190 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#191 0x42e869 in Do_Function ../src/core/c-function.c:415
    #192 0x413628 in Do_Next ../src/core/c-do.c:884
    #193 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #194 0x42e869 in Do_Function ../src/core/c-function.c:415
    #195 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#196 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #197 0x414152 in Do_Next ../src/core/c-do.c:939
    #198 0x48201c in N_all ../src/core/n-control.c:261
    rebol#199 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#200 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#201 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #202 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #203 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #204 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #205 0x413628 in Do_Next ../src/core/c-do.c:884
    #206 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #207 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#208 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#209 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #210 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#211 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#212 0x413628 in Do_Next ../src/core/c-do.c:884
    #213 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #214 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#215 0x413628 in Do_Next ../src/core/c-do.c:884
    #216 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#217 0x48459c in N_if ../src/core/n-control.c:619
    rebol#218 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #219 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#220 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#221 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    rebol#222 0x413628 in Do_Next ../src/core/c-do.c:884
    #223 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #224 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#225 0x48201c in N_all ../src/core/n-control.c:261
    #226 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #227 0x413628 in Do_Next ../src/core/c-do.c:884
    #228 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #229 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #230 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #231 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #232 0x413628 in Do_Next ../src/core/c-do.c:884
    #233 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #234 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#235 0x413628 in Do_Next ../src/core/c-do.c:884
    #236 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #237 0x48459c in N_if ../src/core/n-control.c:619
    #238 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #239 0x413628 in Do_Next ../src/core/c-do.c:884
    #240 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #241 0x42e869 in Do_Function ../src/core/c-function.c:415
    #242 0x413628 in Do_Next ../src/core/c-do.c:884
    #243 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#244 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#245 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#246 0x413628 in Do_Next ../src/core/c-do.c:884
    #247 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #248 0x48459c in N_if ../src/core/n-control.c:619
    rebol#249 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #250 0x413628 in Do_Next ../src/core/c-do.c:884
    #251 0x414825 in Do_Blk ../src/core/c-do.c:1010

0x62a00000b201 is located 1 bytes to the right of 20480-byte region [0x62a000006200,0x62a00000b200)
allocated by thread T0 here:
    #0 0x7ffff6f58b1f in malloc (/usr/lib/libasan.so.1+0x54b1f)
    #1 0x47924a in Make_Mem ../src/core/m-pools.c:121
    rebolsource#2 0x47a9ff in Make_Series ../src/core/m-pools.c:406
    rebolsource#3 0x4aee84 in Make_Unicode ../src/core/s-make.c:59
    #4 0x4bb797 in Init_Mold ../src/core/s-mold.c:1425
    #5 0x40da64 in Init_Core ../src/core/b-init.c:940
    rebolsource#6 0x4055e0 in RL_Init ../src/core/a-lib.c:124
    rebol#7 0x580aa2 in main ../src/os/host-main.c:154
    #8 0x7ffff5719fff in __libc_start_main (/usr/lib/libc.so.6+0x1ffff)

SUMMARY: AddressSanitizer: heap-buffer-overflow ../src/core/m-series.c:145 Expand_Series
Shadow bytes around the buggy address:
  0x0c547fff95f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c547fff9640:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9650: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9660: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9670: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9680: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9690: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Contiguous container OOB:fc
  ASan internal:
zsx referenced this pull request in metaeducation/ren-c Jun 21, 2015
It will confuse Expand_Series expects "tail" to be the actual size, and
cause a read beyond the allocated memory, or heap buffer overflow found
by address sanitizer of GCC:
=================================================================
==10856==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x62a00000b201 at pc 0x47df61 bp 0x7fffffff2ca0 sp 0x7fffffff2c98
READ of size 1 at 0x62a00000b201 thread T0
    #0 0x47df60 in Expand_Series ../src/core/m-series.c:145
    #1 0x47e5a7 in Extend_Series ../src/core/m-series.c:187
    rebolsource#2 0x466e0c in Scan_Quote ../src/core/l-scan.c:462
    rebolsource#3 0x46a797 in Scan_Token ../src/core/l-scan.c:918
    #4 0x46e263 in Scan_Block ../src/core/l-scan.c:1188
    #5 0x46e722 in Scan_Code ../src/core/l-scan.c:1548
    rebolsource#6 0x46e886 in Scan_Source ../src/core/l-scan.c:1568
    rebol#7 0x4cb85c in Make_Block_Type ../src/core/t-block.c:306
    #8 0x4cd1b8 in T_Block ../src/core/t-block.c:608
    #9 0x4d042e in T_Datatype ../src/core/t-datatype.c:92
    #10 0x42e080 in Do_Act ../src/core/c-function.c:338
    #11 0x42e7e5 in Do_Action ../src/core/c-function.c:396
    #12 0x413628 in Do_Next ../src/core/c-do.c:884
    #13 0x41309b in Do_Next ../src/core/c-do.c:858
    #14 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #15 0x482dd2 in N_case ../src/core/n-control.c:349
    #16 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#17 0x413628 in Do_Next ../src/core/c-do.c:884
    #18 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#19 0x42e869 in Do_Function ../src/core/c-function.c:415
    #20 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#21 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#22 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#23 0x42e869 in Do_Function ../src/core/c-function.c:415
    #24 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#25 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#26 0x414152 in Do_Next ../src/core/c-do.c:939
    #27 0x48201c in N_all ../src/core/n-control.c:261
    #28 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #29 0x413628 in Do_Next ../src/core/c-do.c:884
    #30 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #31 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #32 0x492a6c in N_foreach ../src/core/n-loop.c:546
    rebol#33 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #34 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#35 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #36 0x42e869 in Do_Function ../src/core/c-function.c:415
    #37 0x413628 in Do_Next ../src/core/c-do.c:884
    #38 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #39 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#40 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#41 0x48459c in N_if ../src/core/n-control.c:619
    #42 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #43 0x413628 in Do_Next ../src/core/c-do.c:884
    #44 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #45 0x491abc in Loop_Each ../src/core/n-loop.c:410
    rebol#46 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #47 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#48 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#49 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #50 0x42e869 in Do_Function ../src/core/c-function.c:415
    #51 0x418fb4 in Apply_Block ../src/core/c-do.c:1474
    #52 0x4824fb in N_apply ../src/core/n-control.c:295
    rebol#53 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #54 0x413628 in Do_Next ../src/core/c-do.c:884
    #55 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #56 0x414152 in Do_Next ../src/core/c-do.c:939
    #57 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #58 0x485388 in N_unless ../src/core/n-control.c:763
    #59 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#60 0x413628 in Do_Next ../src/core/c-do.c:884
    #61 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #62 0x483eff in N_do ../src/core/n-control.c:523
    #63 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #64 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#65 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#66 0x414152 in Do_Next ../src/core/c-do.c:939
    #67 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#68 0x48459c in N_if ../src/core/n-control.c:619
    #69 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #70 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#71 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #72 0x48f8cc in Loop_Integer ../src/core/n-loop.c:130
    #73 0x49314d in N_repeat ../src/core/n-loop.c:631
    #74 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#75 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#76 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #77 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    #78 0x413628 in Do_Next ../src/core/c-do.c:884
    #79 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #80 0x485388 in N_unless ../src/core/n-control.c:763
    #81 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #82 0x413628 in Do_Next ../src/core/c-do.c:884
    #83 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#84 0x42e869 in Do_Function ../src/core/c-function.c:415
    #85 0x418fb4 in Apply_Block ../src/core/c-do.c:1474
    #86 0x4824fb in N_apply ../src/core/n-control.c:295
    #87 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #88 0x413628 in Do_Next ../src/core/c-do.c:884
    #89 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #90 0x414152 in Do_Next ../src/core/c-do.c:939
    #91 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #92 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#93 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #94 0x413628 in Do_Next ../src/core/c-do.c:884
    #95 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #96 0x483eff in N_do ../src/core/n-control.c:523
    #97 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #98 0x413628 in Do_Next ../src/core/c-do.c:884
    #99 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #100 0x414152 in Do_Next ../src/core/c-do.c:939
    #101 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #102 0x48459c in N_if ../src/core/n-control.c:619
    rebol#103 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #104 0x413628 in Do_Next ../src/core/c-do.c:884
    #105 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #106 0x48f8cc in Loop_Integer ../src/core/n-loop.c:130
    #107 0x49314d in N_repeat ../src/core/n-loop.c:631
    #108 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #109 0x413628 in Do_Next ../src/core/c-do.c:884
    #110 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #111 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    #112 0x413628 in Do_Next ../src/core/c-do.c:884
    #113 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #114 0x485388 in N_unless ../src/core/n-control.c:763
    #115 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #116 0x413628 in Do_Next ../src/core/c-do.c:884
    #117 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#118 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#119 0x413628 in Do_Next ../src/core/c-do.c:884
    #120 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #121 0x484cf1 in N_switch ../src/core/n-control.c:716
    #122 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #123 0x413628 in Do_Next ../src/core/c-do.c:884
    #124 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #125 0x42e869 in Do_Function ../src/core/c-function.c:415
    #126 0x413628 in Do_Next ../src/core/c-do.c:884
    #127 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #128 0x48459c in N_if ../src/core/n-control.c:619
    #129 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #130 0x413628 in Do_Next ../src/core/c-do.c:884
    #131 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #132 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#133 0x413628 in Do_Next ../src/core/c-do.c:884
    #134 0x41309b in Do_Next ../src/core/c-do.c:858
    #135 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #136 0x484280 in N_either ../src/core/n-control.c:595
    #137 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #138 0x413628 in Do_Next ../src/core/c-do.c:884
    #139 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #140 0x42e869 in Do_Function ../src/core/c-function.c:415
    #141 0x419631 in Apply_Function ../src/core/c-do.c:1518
    #142 0x419918 in Apply_Func ../src/core/c-do.c:1545
    #143 0x48d102 in N_wake_up ../src/core/n-io.c:415
    #144 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #145 0x413628 in Do_Next ../src/core/c-do.c:884
    #146 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #147 0x4133c9 in Do_Next ../src/core/c-do.c:877
    #148 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #149 0x492b66 in N_loop ../src/core/n-loop.c:590
    #150 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #151 0x413628 in Do_Next ../src/core/c-do.c:884
    #152 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #153 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#154 0x419631 in Apply_Function ../src/core/c-do.c:1518
    rebol#155 0x419918 in Apply_Func ../src/core/c-do.c:1545
    rebol#156 0x42fef7 in Awake_System ../src/core/c-port.c:198
    rebol#157 0x43012a in Wait_Ports ../src/core/c-port.c:231
    #158 0x48cd62 in N_wait ../src/core/n-io.c:374
    rebol#159 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #160 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#161 0x4115f2 in Do_Args ../src/core/c-do.c:669
    rebol#162 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#163 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #164 0x4133c9 in Do_Next ../src/core/c-do.c:877
    rebol#165 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#166 0x4929a7 in N_forever ../src/core/n-loop.c:527
    #167 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #168 0x413628 in Do_Next ../src/core/c-do.c:884
    #169 0x4152ff in Try_Block ../src/core/c-do.c:1077
    #170 0x48507e in N_try ../src/core/n-control.c:740
    rebol#171 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #172 0x413628 in Do_Next ../src/core/c-do.c:884
    #173 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #174 0x414152 in Do_Next ../src/core/c-do.c:939
    #175 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #176 0x4133c9 in Do_Next ../src/core/c-do.c:877
    #177 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #178 0x4133c9 in Do_Next ../src/core/c-do.c:877
    #179 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #180 0x42e869 in Do_Function ../src/core/c-function.c:415
    #181 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#182 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#183 0x48459c in N_if ../src/core/n-control.c:619
    #184 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #185 0x413628 in Do_Next ../src/core/c-do.c:884
    #186 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #187 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#188 0x413628 in Do_Next ../src/core/c-do.c:884
    #189 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#190 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#191 0x42e869 in Do_Function ../src/core/c-function.c:415
    #192 0x413628 in Do_Next ../src/core/c-do.c:884
    #193 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #194 0x42e869 in Do_Function ../src/core/c-function.c:415
    #195 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#196 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #197 0x414152 in Do_Next ../src/core/c-do.c:939
    #198 0x48201c in N_all ../src/core/n-control.c:261
    rebol#199 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#200 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#201 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #202 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #203 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #204 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #205 0x413628 in Do_Next ../src/core/c-do.c:884
    #206 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #207 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#208 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#209 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #210 0x485388 in N_unless ../src/core/n-control.c:763
    rebol#211 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    rebol#212 0x413628 in Do_Next ../src/core/c-do.c:884
    #213 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #214 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#215 0x413628 in Do_Next ../src/core/c-do.c:884
    #216 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#217 0x48459c in N_if ../src/core/n-control.c:619
    rebol#218 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #219 0x413628 in Do_Next ../src/core/c-do.c:884
    rebol#220 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#221 0x42ee10 in Do_Closure ../src/core/c-function.c:459
    rebol#222 0x413628 in Do_Next ../src/core/c-do.c:884
    #223 0x4115f2 in Do_Args ../src/core/c-do.c:669
    #224 0x414152 in Do_Next ../src/core/c-do.c:939
    rebol#225 0x48201c in N_all ../src/core/n-control.c:261
    #226 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #227 0x413628 in Do_Next ../src/core/c-do.c:884
    #228 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #229 0x491abc in Loop_Each ../src/core/n-loop.c:410
    #230 0x492a6c in N_foreach ../src/core/n-loop.c:546
    #231 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #232 0x413628 in Do_Next ../src/core/c-do.c:884
    #233 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #234 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#235 0x413628 in Do_Next ../src/core/c-do.c:884
    #236 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #237 0x48459c in N_if ../src/core/n-control.c:619
    #238 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #239 0x413628 in Do_Next ../src/core/c-do.c:884
    #240 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #241 0x42e869 in Do_Function ../src/core/c-function.c:415
    #242 0x413628 in Do_Next ../src/core/c-do.c:884
    #243 0x41309b in Do_Next ../src/core/c-do.c:858
    rebol#244 0x414825 in Do_Blk ../src/core/c-do.c:1010
    rebol#245 0x42e869 in Do_Function ../src/core/c-function.c:415
    rebol#246 0x413628 in Do_Next ../src/core/c-do.c:884
    #247 0x414825 in Do_Blk ../src/core/c-do.c:1010
    #248 0x48459c in N_if ../src/core/n-control.c:619
    rebol#249 0x42dbb7 in Do_Native ../src/core/c-function.c:289
    #250 0x413628 in Do_Next ../src/core/c-do.c:884
    #251 0x414825 in Do_Blk ../src/core/c-do.c:1010

0x62a00000b201 is located 1 bytes to the right of 20480-byte region [0x62a000006200,0x62a00000b200)
allocated by thread T0 here:
    #0 0x7ffff6f58b1f in malloc (/usr/lib/libasan.so.1+0x54b1f)
    #1 0x47924a in Make_Mem ../src/core/m-pools.c:121
    rebolsource#2 0x47a9ff in Make_Series ../src/core/m-pools.c:406
    rebolsource#3 0x4aee84 in Make_Unicode ../src/core/s-make.c:59
    #4 0x4bb797 in Init_Mold ../src/core/s-mold.c:1425
    #5 0x40da64 in Init_Core ../src/core/b-init.c:940
    rebolsource#6 0x4055e0 in RL_Init ../src/core/a-lib.c:124
    rebol#7 0x580aa2 in main ../src/os/host-main.c:154
    #8 0x7ffff5719fff in __libc_start_main (/usr/lib/libc.so.6+0x1ffff)

SUMMARY: AddressSanitizer: heap-buffer-overflow ../src/core/m-series.c:145 Expand_Series
Shadow bytes around the buggy address:
  0x0c547fff95f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c547fff9630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c547fff9640:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9650: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9660: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9670: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9680: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c547fff9690: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Contiguous container OOB:fc
  ASan internal:
@zsx zsx deleted the 64-master branch March 14, 2016 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants