110ad081fSJordan Rose // RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=text -verify %s 210ad081fSJordan Rose // RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=plist %s -o %t.plist 313df0362SAnton Yartsev // RUN: FileCheck --input-file=%t.plist %s 413df0362SAnton Yartsev 513df0362SAnton Yartsev void test() { 613df0362SAnton Yartsev int *p = new int; 713df0362SAnton Yartsev // expected-note@-1 {{Memory is allocated}} 813df0362SAnton Yartsev if (p) 913df0362SAnton Yartsev // expected-note@-1 {{Assuming 'p' is non-null}} 1013df0362SAnton Yartsev // expected-note@-2 {{Taking true branch}} 1113df0362SAnton Yartsev delete p; 1213df0362SAnton Yartsev // expected-note@-1 {{Memory is released}} 1313df0362SAnton Yartsev 1413df0362SAnton Yartsev delete p; // expected-warning {{Attempt to free released memory}} 1513df0362SAnton Yartsev // expected-note@-1 {{Attempt to free released memory}} 1613df0362SAnton Yartsev } 1713df0362SAnton Yartsev 18*e4cfcd4eSAnna Zaks struct Odd { 19*e4cfcd4eSAnna Zaks void kill() { 20*e4cfcd4eSAnna Zaks delete this; // expected-note {{Memory is released}} 21*e4cfcd4eSAnna Zaks } 22*e4cfcd4eSAnna Zaks }; 23*e4cfcd4eSAnna Zaks 24*e4cfcd4eSAnna Zaks void test(Odd *odd) { 25*e4cfcd4eSAnna Zaks odd->kill(); // expected-note{{Calling 'Odd::kill'}} 26*e4cfcd4eSAnna Zaks // expected-note@-1 {{Returning; memory was released}} 27*e4cfcd4eSAnna Zaks delete odd; // expected-warning {{Attempt to free released memory}} 28*e4cfcd4eSAnna Zaks // expected-note@-1 {{Attempt to free released memory}} 29*e4cfcd4eSAnna Zaks } 30*e4cfcd4eSAnna Zaks 3113df0362SAnton Yartsev // CHECK: <key>diagnostics</key> 3213df0362SAnton Yartsev // CHECK-NEXT: <array> 3313df0362SAnton Yartsev // CHECK-NEXT: <dict> 3413df0362SAnton Yartsev // CHECK-NEXT: <key>path</key> 3513df0362SAnton Yartsev // CHECK-NEXT: <array> 3613df0362SAnton Yartsev // CHECK-NEXT: <dict> 3713df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>control</string> 3813df0362SAnton Yartsev // CHECK-NEXT: <key>edges</key> 3913df0362SAnton Yartsev // CHECK-NEXT: <array> 4013df0362SAnton Yartsev // CHECK-NEXT: <dict> 4113df0362SAnton Yartsev // CHECK-NEXT: <key>start</key> 4213df0362SAnton Yartsev // CHECK-NEXT: <array> 4313df0362SAnton Yartsev // CHECK-NEXT: <dict> 4413df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 4513df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 4613df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 4713df0362SAnton Yartsev // CHECK-NEXT: </dict> 4813df0362SAnton Yartsev // CHECK-NEXT: <dict> 4913df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 5013df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>5</integer> 5113df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 5213df0362SAnton Yartsev // CHECK-NEXT: </dict> 5313df0362SAnton Yartsev // CHECK-NEXT: </array> 5413df0362SAnton Yartsev // CHECK-NEXT: <key>end</key> 5513df0362SAnton Yartsev // CHECK-NEXT: <array> 5613df0362SAnton Yartsev // CHECK-NEXT: <dict> 5713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 5813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>12</integer> 5913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 6013df0362SAnton Yartsev // CHECK-NEXT: </dict> 6113df0362SAnton Yartsev // CHECK-NEXT: <dict> 6213df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 6313df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>14</integer> 6413df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 6513df0362SAnton Yartsev // CHECK-NEXT: </dict> 6613df0362SAnton Yartsev // CHECK-NEXT: </array> 6713df0362SAnton Yartsev // CHECK-NEXT: </dict> 6813df0362SAnton Yartsev // CHECK-NEXT: </array> 6913df0362SAnton Yartsev // CHECK-NEXT: </dict> 7013df0362SAnton Yartsev // CHECK-NEXT: <dict> 7113df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>event</string> 7213df0362SAnton Yartsev // CHECK-NEXT: <key>location</key> 7313df0362SAnton Yartsev // CHECK-NEXT: <dict> 7413df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 7513df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>12</integer> 7613df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 7713df0362SAnton Yartsev // CHECK-NEXT: </dict> 7813df0362SAnton Yartsev // CHECK-NEXT: <key>ranges</key> 7913df0362SAnton Yartsev // CHECK-NEXT: <array> 8013df0362SAnton Yartsev // CHECK-NEXT: <array> 8113df0362SAnton Yartsev // CHECK-NEXT: <dict> 8213df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 8313df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>12</integer> 8413df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 8513df0362SAnton Yartsev // CHECK-NEXT: </dict> 8613df0362SAnton Yartsev // CHECK-NEXT: <dict> 8713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 8813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>18</integer> 8913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 9013df0362SAnton Yartsev // CHECK-NEXT: </dict> 9113df0362SAnton Yartsev // CHECK-NEXT: </array> 9213df0362SAnton Yartsev // CHECK-NEXT: </array> 9313df0362SAnton Yartsev // CHECK-NEXT: <key>depth</key><integer>0</integer> 9413df0362SAnton Yartsev // CHECK-NEXT: <key>extended_message</key> 9513df0362SAnton Yartsev // CHECK-NEXT: <string>Memory is allocated</string> 9613df0362SAnton Yartsev // CHECK-NEXT: <key>message</key> 9713df0362SAnton Yartsev // CHECK-NEXT: <string>Memory is allocated</string> 9813df0362SAnton Yartsev // CHECK-NEXT: </dict> 9913df0362SAnton Yartsev // CHECK-NEXT: <dict> 10013df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>control</string> 10113df0362SAnton Yartsev // CHECK-NEXT: <key>edges</key> 10213df0362SAnton Yartsev // CHECK-NEXT: <array> 10313df0362SAnton Yartsev // CHECK-NEXT: <dict> 10413df0362SAnton Yartsev // CHECK-NEXT: <key>start</key> 10513df0362SAnton Yartsev // CHECK-NEXT: <array> 10613df0362SAnton Yartsev // CHECK-NEXT: <dict> 10713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 10813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>12</integer> 10913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 11013df0362SAnton Yartsev // CHECK-NEXT: </dict> 11113df0362SAnton Yartsev // CHECK-NEXT: <dict> 11213df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>6</integer> 11313df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>14</integer> 11413df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 11513df0362SAnton Yartsev // CHECK-NEXT: </dict> 11613df0362SAnton Yartsev // CHECK-NEXT: </array> 11713df0362SAnton Yartsev // CHECK-NEXT: <key>end</key> 11813df0362SAnton Yartsev // CHECK-NEXT: <array> 11913df0362SAnton Yartsev // CHECK-NEXT: <dict> 12013df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 12113df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 12213df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 12313df0362SAnton Yartsev // CHECK-NEXT: </dict> 12413df0362SAnton Yartsev // CHECK-NEXT: <dict> 12513df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 12613df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>4</integer> 12713df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 12813df0362SAnton Yartsev // CHECK-NEXT: </dict> 12913df0362SAnton Yartsev // CHECK-NEXT: </array> 13013df0362SAnton Yartsev // CHECK-NEXT: </dict> 13113df0362SAnton Yartsev // CHECK-NEXT: </array> 13213df0362SAnton Yartsev // CHECK-NEXT: </dict> 13313df0362SAnton Yartsev // CHECK-NEXT: <dict> 13413df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>control</string> 13513df0362SAnton Yartsev // CHECK-NEXT: <key>edges</key> 13613df0362SAnton Yartsev // CHECK-NEXT: <array> 13713df0362SAnton Yartsev // CHECK-NEXT: <dict> 13813df0362SAnton Yartsev // CHECK-NEXT: <key>start</key> 13913df0362SAnton Yartsev // CHECK-NEXT: <array> 14013df0362SAnton Yartsev // CHECK-NEXT: <dict> 14113df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 14213df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 14313df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 14413df0362SAnton Yartsev // CHECK-NEXT: </dict> 14513df0362SAnton Yartsev // CHECK-NEXT: <dict> 14613df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 14713df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>4</integer> 14813df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 14913df0362SAnton Yartsev // CHECK-NEXT: </dict> 15013df0362SAnton Yartsev // CHECK-NEXT: </array> 15113df0362SAnton Yartsev // CHECK-NEXT: <key>end</key> 15213df0362SAnton Yartsev // CHECK-NEXT: <array> 15313df0362SAnton Yartsev // CHECK-NEXT: <dict> 15413df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 15513df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 15613df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 15713df0362SAnton Yartsev // CHECK-NEXT: </dict> 15813df0362SAnton Yartsev // CHECK-NEXT: <dict> 15913df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 16013df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 16113df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 16213df0362SAnton Yartsev // CHECK-NEXT: </dict> 16313df0362SAnton Yartsev // CHECK-NEXT: </array> 16413df0362SAnton Yartsev // CHECK-NEXT: </dict> 16513df0362SAnton Yartsev // CHECK-NEXT: </array> 16613df0362SAnton Yartsev // CHECK-NEXT: </dict> 16713df0362SAnton Yartsev // CHECK-NEXT: <dict> 16813df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>event</string> 16913df0362SAnton Yartsev // CHECK-NEXT: <key>location</key> 17013df0362SAnton Yartsev // CHECK-NEXT: <dict> 17113df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 17213df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 17313df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 17413df0362SAnton Yartsev // CHECK-NEXT: </dict> 17513df0362SAnton Yartsev // CHECK-NEXT: <key>ranges</key> 17613df0362SAnton Yartsev // CHECK-NEXT: <array> 17713df0362SAnton Yartsev // CHECK-NEXT: <array> 17813df0362SAnton Yartsev // CHECK-NEXT: <dict> 17913df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 18013df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 18113df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 18213df0362SAnton Yartsev // CHECK-NEXT: </dict> 18313df0362SAnton Yartsev // CHECK-NEXT: <dict> 18413df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 18513df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 18613df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 18713df0362SAnton Yartsev // CHECK-NEXT: </dict> 18813df0362SAnton Yartsev // CHECK-NEXT: </array> 18913df0362SAnton Yartsev // CHECK-NEXT: </array> 19013df0362SAnton Yartsev // CHECK-NEXT: <key>depth</key><integer>0</integer> 19113df0362SAnton Yartsev // CHECK-NEXT: <key>extended_message</key> 19213df0362SAnton Yartsev // CHECK-NEXT: <string>Assuming 'p' is non-null</string> 19313df0362SAnton Yartsev // CHECK-NEXT: <key>message</key> 19413df0362SAnton Yartsev // CHECK-NEXT: <string>Assuming 'p' is non-null</string> 19513df0362SAnton Yartsev // CHECK-NEXT: </dict> 19613df0362SAnton Yartsev // CHECK-NEXT: <dict> 19713df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>control</string> 19813df0362SAnton Yartsev // CHECK-NEXT: <key>edges</key> 19913df0362SAnton Yartsev // CHECK-NEXT: <array> 20013df0362SAnton Yartsev // CHECK-NEXT: <dict> 20113df0362SAnton Yartsev // CHECK-NEXT: <key>start</key> 20213df0362SAnton Yartsev // CHECK-NEXT: <array> 20313df0362SAnton Yartsev // CHECK-NEXT: <dict> 20413df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 20513df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 20613df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 20713df0362SAnton Yartsev // CHECK-NEXT: </dict> 20813df0362SAnton Yartsev // CHECK-NEXT: <dict> 20913df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>8</integer> 21013df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>7</integer> 21113df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 21213df0362SAnton Yartsev // CHECK-NEXT: </dict> 21313df0362SAnton Yartsev // CHECK-NEXT: </array> 21413df0362SAnton Yartsev // CHECK-NEXT: <key>end</key> 21513df0362SAnton Yartsev // CHECK-NEXT: <array> 21613df0362SAnton Yartsev // CHECK-NEXT: <dict> 21713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 21813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>5</integer> 21913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 22013df0362SAnton Yartsev // CHECK-NEXT: </dict> 22113df0362SAnton Yartsev // CHECK-NEXT: <dict> 22213df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 22313df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>10</integer> 22413df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 22513df0362SAnton Yartsev // CHECK-NEXT: </dict> 22613df0362SAnton Yartsev // CHECK-NEXT: </array> 22713df0362SAnton Yartsev // CHECK-NEXT: </dict> 22813df0362SAnton Yartsev // CHECK-NEXT: </array> 22913df0362SAnton Yartsev // CHECK-NEXT: </dict> 23013df0362SAnton Yartsev // CHECK-NEXT: <dict> 23113df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>event</string> 23213df0362SAnton Yartsev // CHECK-NEXT: <key>location</key> 23313df0362SAnton Yartsev // CHECK-NEXT: <dict> 23413df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 23513df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>5</integer> 23613df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 23713df0362SAnton Yartsev // CHECK-NEXT: </dict> 23813df0362SAnton Yartsev // CHECK-NEXT: <key>ranges</key> 23913df0362SAnton Yartsev // CHECK-NEXT: <array> 24013df0362SAnton Yartsev // CHECK-NEXT: <array> 24113df0362SAnton Yartsev // CHECK-NEXT: <dict> 24213df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 24313df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>5</integer> 24413df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 24513df0362SAnton Yartsev // CHECK-NEXT: </dict> 24613df0362SAnton Yartsev // CHECK-NEXT: <dict> 24713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 24813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>12</integer> 24913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 25013df0362SAnton Yartsev // CHECK-NEXT: </dict> 25113df0362SAnton Yartsev // CHECK-NEXT: </array> 25213df0362SAnton Yartsev // CHECK-NEXT: </array> 25313df0362SAnton Yartsev // CHECK-NEXT: <key>depth</key><integer>0</integer> 25413df0362SAnton Yartsev // CHECK-NEXT: <key>extended_message</key> 25513df0362SAnton Yartsev // CHECK-NEXT: <string>Memory is released</string> 25613df0362SAnton Yartsev // CHECK-NEXT: <key>message</key> 25713df0362SAnton Yartsev // CHECK-NEXT: <string>Memory is released</string> 25813df0362SAnton Yartsev // CHECK-NEXT: </dict> 25913df0362SAnton Yartsev // CHECK-NEXT: <dict> 26013df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>control</string> 26113df0362SAnton Yartsev // CHECK-NEXT: <key>edges</key> 26213df0362SAnton Yartsev // CHECK-NEXT: <array> 26313df0362SAnton Yartsev // CHECK-NEXT: <dict> 26413df0362SAnton Yartsev // CHECK-NEXT: <key>start</key> 26513df0362SAnton Yartsev // CHECK-NEXT: <array> 26613df0362SAnton Yartsev // CHECK-NEXT: <dict> 26713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 26813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>5</integer> 26913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 27013df0362SAnton Yartsev // CHECK-NEXT: </dict> 27113df0362SAnton Yartsev // CHECK-NEXT: <dict> 27213df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>11</integer> 27313df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>10</integer> 27413df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 27513df0362SAnton Yartsev // CHECK-NEXT: </dict> 27613df0362SAnton Yartsev // CHECK-NEXT: </array> 27713df0362SAnton Yartsev // CHECK-NEXT: <key>end</key> 27813df0362SAnton Yartsev // CHECK-NEXT: <array> 27913df0362SAnton Yartsev // CHECK-NEXT: <dict> 28013df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>14</integer> 28113df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 28213df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 28313df0362SAnton Yartsev // CHECK-NEXT: </dict> 28413df0362SAnton Yartsev // CHECK-NEXT: <dict> 28513df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>14</integer> 28613df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>8</integer> 28713df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 28813df0362SAnton Yartsev // CHECK-NEXT: </dict> 28913df0362SAnton Yartsev // CHECK-NEXT: </array> 29013df0362SAnton Yartsev // CHECK-NEXT: </dict> 29113df0362SAnton Yartsev // CHECK-NEXT: </array> 29213df0362SAnton Yartsev // CHECK-NEXT: </dict> 29313df0362SAnton Yartsev // CHECK-NEXT: <dict> 29413df0362SAnton Yartsev // CHECK-NEXT: <key>kind</key><string>event</string> 29513df0362SAnton Yartsev // CHECK-NEXT: <key>location</key> 29613df0362SAnton Yartsev // CHECK-NEXT: <dict> 29713df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>14</integer> 29813df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 29913df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 30013df0362SAnton Yartsev // CHECK-NEXT: </dict> 30113df0362SAnton Yartsev // CHECK-NEXT: <key>ranges</key> 30213df0362SAnton Yartsev // CHECK-NEXT: <array> 30313df0362SAnton Yartsev // CHECK-NEXT: <array> 30413df0362SAnton Yartsev // CHECK-NEXT: <dict> 30513df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>14</integer> 30613df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 30713df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 30813df0362SAnton Yartsev // CHECK-NEXT: </dict> 30913df0362SAnton Yartsev // CHECK-NEXT: <dict> 31013df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>14</integer> 31113df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>10</integer> 31213df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 31313df0362SAnton Yartsev // CHECK-NEXT: </dict> 31413df0362SAnton Yartsev // CHECK-NEXT: </array> 31513df0362SAnton Yartsev // CHECK-NEXT: </array> 31613df0362SAnton Yartsev // CHECK-NEXT: <key>depth</key><integer>0</integer> 31713df0362SAnton Yartsev // CHECK-NEXT: <key>extended_message</key> 31813df0362SAnton Yartsev // CHECK-NEXT: <string>Attempt to free released memory</string> 31913df0362SAnton Yartsev // CHECK-NEXT: <key>message</key> 32013df0362SAnton Yartsev // CHECK-NEXT: <string>Attempt to free released memory</string> 32113df0362SAnton Yartsev // CHECK-NEXT: </dict> 32213df0362SAnton Yartsev // CHECK-NEXT: </array> 32313df0362SAnton Yartsev // CHECK-NEXT: <key>description</key><string>Attempt to free released memory</string> 32413df0362SAnton Yartsev // CHECK-NEXT: <key>category</key><string>Memory Error</string> 32513df0362SAnton Yartsev // CHECK-NEXT: <key>type</key><string>Double free</string> 32613df0362SAnton Yartsev // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> 32713df0362SAnton Yartsev // CHECK-NEXT: <key>issue_context</key><string>test</string> 32813df0362SAnton Yartsev // CHECK-NEXT: <key>issue_hash</key><string>9</string> 32913df0362SAnton Yartsev // CHECK-NEXT: <key>location</key> 33013df0362SAnton Yartsev // CHECK-NEXT: <dict> 33113df0362SAnton Yartsev // CHECK-NEXT: <key>line</key><integer>14</integer> 33213df0362SAnton Yartsev // CHECK-NEXT: <key>col</key><integer>3</integer> 33313df0362SAnton Yartsev // CHECK-NEXT: <key>file</key><integer>0</integer> 33413df0362SAnton Yartsev // CHECK-NEXT: </dict> 33513df0362SAnton Yartsev // CHECK-NEXT: </dict> 336*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 337*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>path</key> 338*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 339*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 340*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>event</string> 341*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>location</key> 342*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 343*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 344*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 345*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 346*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 347*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>ranges</key> 348*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 349*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 350*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 351*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 352*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 353*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 354*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 355*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 356*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 357*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>12</integer> 358*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 359*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 360*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 361*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 362*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>depth</key><integer>0</integer> 363*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>extended_message</key> 364*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Calling 'Odd::kill'</string> 365*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>message</key> 366*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Calling 'Odd::kill'</string> 367*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 368*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 369*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>event</string> 370*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>location</key> 371*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 372*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>19</integer> 373*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 374*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 375*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 376*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>depth</key><integer>1</integer> 377*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>extended_message</key> 378*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Entered call from 'test'</string> 379*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>message</key> 380*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Entered call from 'test'</string> 381*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 382*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 383*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>control</string> 384*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>edges</key> 385*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 386*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 387*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>start</key> 388*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 389*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 390*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>19</integer> 391*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 392*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 393*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 394*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 395*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>19</integer> 396*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>5</integer> 397*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 398*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 399*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 400*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>end</key> 401*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 402*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 403*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>20</integer> 404*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>3</integer> 405*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 406*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 407*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 408*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>20</integer> 409*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>8</integer> 410*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 411*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 412*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 413*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 414*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 415*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 416*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 417*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>event</string> 418*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>location</key> 419*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 420*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>20</integer> 421*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>3</integer> 422*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 423*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 424*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>ranges</key> 425*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 426*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 427*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 428*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>20</integer> 429*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>3</integer> 430*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 431*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 432*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 433*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>20</integer> 434*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>13</integer> 435*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 436*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 437*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 438*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 439*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>depth</key><integer>1</integer> 440*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>extended_message</key> 441*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Memory is released</string> 442*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>message</key> 443*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Memory is released</string> 444*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 445*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 446*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>event</string> 447*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>location</key> 448*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 449*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 450*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 451*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 452*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 453*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>ranges</key> 454*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 455*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 456*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 457*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 458*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 459*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 460*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 461*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 462*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 463*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>12</integer> 464*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 465*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 466*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 467*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 468*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>depth</key><integer>0</integer> 469*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>extended_message</key> 470*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Returning; memory was released</string> 471*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>message</key> 472*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Returning; memory was released</string> 473*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 474*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 475*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>control</string> 476*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>edges</key> 477*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 478*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 479*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>start</key> 480*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 481*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 482*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 483*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 484*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 485*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 486*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 487*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>25</integer> 488*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>4</integer> 489*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 490*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 491*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 492*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>end</key> 493*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 494*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 495*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>27</integer> 496*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 497*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 498*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 499*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 500*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>27</integer> 501*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>7</integer> 502*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 503*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 504*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 505*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 506*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 507*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 508*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 509*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>kind</key><string>event</string> 510*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>location</key> 511*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 512*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>27</integer> 513*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 514*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 515*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 516*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>ranges</key> 517*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 518*e4cfcd4eSAnna Zaks // CHECK-NEXT: <array> 519*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 520*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>27</integer> 521*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 522*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 523*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 524*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 525*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>27</integer> 526*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>11</integer> 527*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 528*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 529*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 530*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 531*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>depth</key><integer>0</integer> 532*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>extended_message</key> 533*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Attempt to free released memory</string> 534*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>message</key> 535*e4cfcd4eSAnna Zaks // CHECK-NEXT: <string>Attempt to free released memory</string> 536*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 537*e4cfcd4eSAnna Zaks // CHECK-NEXT: </array> 538*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>description</key><string>Attempt to free released memory</string> 539*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>category</key><string>Memory Error</string> 540*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>type</key><string>Double free</string> 541*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> 542*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>issue_context</key><string>test</string> 543*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>issue_hash</key><string>3</string> 544*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>location</key> 545*e4cfcd4eSAnna Zaks // CHECK-NEXT: <dict> 546*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>line</key><integer>27</integer> 547*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>col</key><integer>2</integer> 548*e4cfcd4eSAnna Zaks // CHECK-NEXT: <key>file</key><integer>0</integer> 549*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 550*e4cfcd4eSAnna Zaks // CHECK-NEXT: </dict> 55113df0362SAnton Yartsev // CHECK-NEXT: </array> 552