-
-
Save alexanderkyte/d7bc0222cbcf7135f2513f99556ddd80 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
akyte@Alexanders-MacBook-Pro-3 ~/Projects/SpanCrash/SpanCrash/bin/Debug (master*) $ MONO_VERBOSE_METHOD="ConstStrLen" MONO_EXECUTABLE="/Users/akyte/mono_llvm_opt/mono/mini/mono-sgen --" MONO_PATH=/Users/akyte/mono_llvm_opt/mcs/class/lib/net_4_x /Users/akyte/mono_llvm_opt/runtime/mono-wrapper --aot-path=/Users/akyte/mono_llvm_opt/mcs/class/lib/net_4_x --aot=llvm SpanCrash.exe | |
Mono Ahead of Time compiler - compiling assembly /Users/akyte/Projects/SpanCrash/SpanCrash/bin/Debug/SpanCrash.exe | |
AOTID FACB7FE7-D5C2-86F3-D9CD-FE9BF24E6B86 | |
Executing opt: "opt" -f -O2 -disable-tail-calls -place-safepoints -spp-all-backedges -o "mono_aot_qw78ek/temp.opt.bc" "mono_aot_qw78ek/temp.bc" | |
Executing llc: "llc" -march=x86-64 -mcpu=generic -asm-verbose=false -disable-gnu-eh-frame -enable-mono-eh-frame -mono-eh-frame-symbol=_mono_aot_SpanCrash_eh_frame -disable-tail-calls -no-x86-call-frame-opt -relocation-model=pic -filetype=obj -o "mono_aot_qw78ek/temp-llvm.o" "mono_aot_qw78ek/temp.opt.bc" | |
Compiled: 8/8 | |
Executing the native assembler: "clang" -c -x assembler -o /var/folders/00/v8q_733j1hd8br7nxhxs41d80000gn/T/mono_aot_hc3plt.o /var/folders/00/v8q_733j1hd8br7nxhxs41d80000gn/T/mono_aot_hc3plt | |
Executing the native linker: clang --shared -o /Users/akyte/Projects/SpanCrash/SpanCrash/bin/Debug/SpanCrash.exe.dylib.tmp "mono_aot_qw78ek/temp-llvm.o" /var/folders/00/v8q_733j1hd8br7nxhxs41d80000gn/T/mono_aot_hc3plt.o | |
Executing dsymutil: dsymutil "/Users/akyte/Projects/SpanCrash/SpanCrash/bin/Debug/SpanCrash.exe.dylib" | |
warning: no debug symbols in executable (-arch x86_64) | |
JIT time: 6 ms, Generation time: 251 ms, Assembly+Link time: 116 ms. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Runtime.CompilerServices; | |
namespace SpanCrash | |
{ | |
class MainClass | |
{ | |
[MethodImpl(MethodImplOptions.NoInlining)] | |
private static int SpanIndexOf(byte[] backingArray) | |
{ | |
byte ByteLF = (byte)'\n'; | |
var span = new Span<byte>(backingArray); | |
return span.IndexOf(ByteLF); | |
} | |
[MethodImpl(MethodImplOptions.NoInlining)] | |
private static void AssertOnBytes() | |
{ | |
byte[] backingArray = new byte[195]; | |
backingArray[0] = (byte)71; | |
backingArray[1] = (byte)69; | |
backingArray[2] = (byte)84; | |
backingArray[3] = (byte)32; | |
backingArray[4] = (byte)47; | |
backingArray[5] = (byte)112; | |
backingArray[6] = (byte)108; | |
backingArray[7] = (byte)97; | |
backingArray[8] = (byte)105; | |
backingArray[9] = (byte)110; | |
backingArray[10] = (byte)116; | |
backingArray[11] = (byte)101; | |
backingArray[12] = (byte)120; | |
backingArray[13] = (byte)116; | |
backingArray[14] = (byte)32; | |
backingArray[15] = (byte)72; | |
backingArray[16] = (byte)84; | |
backingArray[17] = (byte)84; | |
backingArray[18] = (byte)80; | |
backingArray[19] = (byte)47; | |
backingArray[20] = (byte)49; | |
backingArray[21] = (byte)46; | |
backingArray[22] = (byte)49; | |
backingArray[23] = (byte)13; | |
backingArray[24] = (byte)10; | |
backingArray[25] = (byte)72; | |
backingArray[26] = (byte)111; | |
backingArray[27] = (byte)115; | |
backingArray[28] = (byte)116; | |
backingArray[29] = (byte)58; | |
backingArray[30] = (byte)32; | |
backingArray[31] = (byte)49; | |
backingArray[32] = (byte)50; | |
backingArray[33] = (byte)55; | |
backingArray[34] = (byte)46; | |
backingArray[35] = (byte)48; | |
backingArray[36] = (byte)46; | |
backingArray[37] = (byte)48; | |
backingArray[38] = (byte)46; | |
backingArray[39] = (byte)49; | |
backingArray[40] = (byte)58; | |
backingArray[41] = (byte)56; | |
backingArray[42] = (byte)48; | |
backingArray[43] = (byte)56; | |
backingArray[44] = (byte)48; | |
backingArray[45] = (byte)13; | |
backingArray[46] = (byte)10; | |
backingArray[47] = (byte)85; | |
backingArray[48] = (byte)115; | |
backingArray[49] = (byte)101; | |
backingArray[50] = (byte)114; | |
backingArray[51] = (byte)45; | |
backingArray[52] = (byte)65; | |
backingArray[53] = (byte)103; | |
backingArray[54] = (byte)101; | |
backingArray[55] = (byte)110; | |
backingArray[56] = (byte)116; | |
backingArray[57] = (byte)58; | |
backingArray[58] = (byte)32; | |
backingArray[59] = (byte)99; | |
backingArray[60] = (byte)117; | |
backingArray[61] = (byte)114; | |
backingArray[62] = (byte)108; | |
backingArray[63] = (byte)47; | |
backingArray[64] = (byte)55; | |
backingArray[65] = (byte)46; | |
backingArray[66] = (byte)52; | |
backingArray[67] = (byte)55; | |
backingArray[68] = (byte)46; | |
backingArray[69] = (byte)48; | |
backingArray[70] = (byte)13; | |
backingArray[71] = (byte)10; | |
backingArray[72] = (byte)65; | |
backingArray[73] = (byte)99; | |
backingArray[74] = (byte)99; | |
backingArray[75] = (byte)101; | |
backingArray[76] = (byte)112; | |
backingArray[77] = (byte)116; | |
backingArray[78] = (byte)58; | |
backingArray[79] = (byte)32; | |
backingArray[80] = (byte)116; | |
backingArray[81] = (byte)101; | |
backingArray[82] = (byte)120; | |
backingArray[83] = (byte)116; | |
backingArray[84] = (byte)47; | |
backingArray[85] = (byte)112; | |
backingArray[86] = (byte)108; | |
backingArray[87] = (byte)97; | |
backingArray[88] = (byte)105; | |
backingArray[89] = (byte)110; | |
backingArray[90] = (byte)44; | |
backingArray[91] = (byte)116; | |
backingArray[92] = (byte)101; | |
backingArray[93] = (byte)120; | |
backingArray[94] = (byte)116; | |
backingArray[95] = (byte)47; | |
backingArray[96] = (byte)104; | |
backingArray[97] = (byte)116; | |
backingArray[98] = (byte)109; | |
backingArray[99] = (byte)108; | |
backingArray[100] = (byte)59; | |
backingArray[101] = (byte)113; | |
backingArray[102] = (byte)61; | |
backingArray[103] = (byte)48; | |
backingArray[104] = (byte)46; | |
backingArray[105] = (byte)57; | |
backingArray[106] = (byte)44; | |
backingArray[107] = (byte)97; | |
backingArray[108] = (byte)112; | |
backingArray[109] = (byte)112; | |
backingArray[110] = (byte)108; | |
backingArray[111] = (byte)105; | |
backingArray[112] = (byte)99; | |
backingArray[113] = (byte)97; | |
backingArray[114] = (byte)116; | |
backingArray[115] = (byte)105; | |
backingArray[116] = (byte)111; | |
backingArray[117] = (byte)110; | |
backingArray[118] = (byte)47; | |
backingArray[119] = (byte)120; | |
backingArray[120] = (byte)104; | |
backingArray[121] = (byte)116; | |
backingArray[122] = (byte)109; | |
backingArray[123] = (byte)108; | |
backingArray[124] = (byte)43; | |
backingArray[125] = (byte)120; | |
backingArray[126] = (byte)109; | |
backingArray[127] = (byte)108; | |
backingArray[128] = (byte)59; | |
backingArray[129] = (byte)113; | |
backingArray[130] = (byte)61; | |
backingArray[131] = (byte)48; | |
backingArray[132] = (byte)46; | |
backingArray[133] = (byte)57; | |
backingArray[134] = (byte)44; | |
backingArray[135] = (byte)97; | |
backingArray[136] = (byte)112; | |
backingArray[137] = (byte)112; | |
backingArray[138] = (byte)108; | |
backingArray[139] = (byte)105; | |
backingArray[140] = (byte)99; | |
backingArray[141] = (byte)97; | |
backingArray[142] = (byte)116; | |
backingArray[143] = (byte)105; | |
backingArray[144] = (byte)111; | |
backingArray[145] = (byte)110; | |
backingArray[146] = (byte)47; | |
backingArray[147] = (byte)120; | |
backingArray[148] = (byte)109; | |
backingArray[149] = (byte)108; | |
backingArray[150] = (byte)59; | |
backingArray[151] = (byte)113; | |
backingArray[152] = (byte)61; | |
backingArray[153] = (byte)48; | |
backingArray[154] = (byte)46; | |
backingArray[155] = (byte)56; | |
backingArray[156] = (byte)44; | |
backingArray[157] = (byte)42; | |
backingArray[158] = (byte)47; | |
backingArray[159] = (byte)42; | |
backingArray[160] = (byte)59; | |
backingArray[161] = (byte)113; | |
backingArray[162] = (byte)61; | |
backingArray[163] = (byte)48; | |
backingArray[164] = (byte)46; | |
backingArray[165] = (byte)55; | |
backingArray[166] = (byte)13; | |
backingArray[167] = (byte)10; | |
backingArray[168] = (byte)67; | |
backingArray[169] = (byte)111; | |
backingArray[170] = (byte)110; | |
backingArray[171] = (byte)110; | |
backingArray[172] = (byte)101; | |
backingArray[173] = (byte)99; | |
backingArray[174] = (byte)116; | |
backingArray[175] = (byte)105; | |
backingArray[176] = (byte)111; | |
backingArray[177] = (byte)110; | |
backingArray[178] = (byte)58; | |
backingArray[179] = (byte)32; | |
backingArray[180] = (byte)107; | |
backingArray[181] = (byte)101; | |
backingArray[182] = (byte)101; | |
backingArray[183] = (byte)112; | |
backingArray[184] = (byte)45; | |
backingArray[185] = (byte)97; | |
backingArray[186] = (byte)108; | |
backingArray[187] = (byte)105; | |
backingArray[188] = (byte)118; | |
backingArray[189] = (byte)101; | |
backingArray[190] = (byte)13; | |
backingArray[191] = (byte)10; | |
backingArray[192] = (byte)13; | |
backingArray[193] = (byte)10; | |
var lineIndex = SpanIndexOf(backingArray); | |
Console.WriteLine("Line Index Was {0}", lineIndex); | |
byte ByteLF = (byte)'\n'; | |
for (int i = 0; i < lineIndex; i++) | |
{ | |
if (backingArray[i] == ByteLF) | |
{ | |
var error = String.Format("Missed index {0} as ByteLF", i); | |
Console.WriteLine(error); | |
throw new Exception(error); | |
} | |
} | |
} | |
public static void Main(string[] args) | |
{ | |
AssertOnBytes(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
akyte@Alexanders-MacBook-Pro-3 ~/Projects/SpanCrash/SpanCrash/bin/Debug (master*) $ MONO_VERBOSE_METHOD="ConstStrLen" MONO_EXECUTABLE="/Users/akyte/mono_llvm_opt/mono/mini/mono-sgen --" MONO_PATH=/Users/akyte/mono_llvm_opt/mcs/class/lib/net_4_x /Users/akyte/mono_llvm_opt/runtime/mono-wrapper --aot-path=/Users/akyte/mono_llvm_opt/mcs/class/lib/net_4_x --llvm SpanCrash.exe | |
Line Index Was 193 | |
Missed index 24 as ByteLF | |
Unhandled Exception: | |
System.Exception: Missed index 24 as ByteLF | |
at SpanCrash.MainClass.AssertOnBytes () <0x10cbd91b0 + 0x002c6> in <168c4942b9ea45bc92c443f7f42ea333#facb7fe7d5c286f3d9cdfe9bf24e6b86>:0 | |
at SpanCrash.MainClass.Main (System.String[] args) <0x10cbd9480 + 0x00018> in <168c4942b9ea45bc92c443f7f42ea333#facb7fe7d5c286f3d9cdfe9bf24e6b86>:0 | |
[ERROR] FATAL UNHANDLED EXCEPTION: System.Exception: Missed index 24 as ByteLF | |
at SpanCrash.MainClass.AssertOnBytes () <0x10cbd91b0 + 0x002c6> in <168c4942b9ea45bc92c443f7f42ea333#facb7fe7d5c286f3d9cdfe9bf24e6b86>:0 | |
at SpanCrash.MainClass.Main (System.String[] args) <0x10cbd9480 + 0x00018> in <168c4942b9ea45bc92c443f7f42ea333#facb7fe7d5c286f3d9cdfe9bf24e6b86>:0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment