XError *xe = (XError*)VG_(get_error_extra)(err);
tl_assert(xe);
+ if (xml)
+ emit( " <kind>%s</kind>\n", pc_get_error_name(err));
+
switch (VG_(get_error_kind)(err)) {
//----------------------------------------------------------
if (xml) {
- emit( " <kind>SorG</kind>\n");
emit( " <what>Invalid %s of size %ld</what>\n",
xe->XE.SorG.sszB < 0 ? "write" : "read",
Word__abs(xe->XE.SorG.sszB) );
if (xml) {
- emit( " <kind>Heap</kind>\n");
emit( " <what>Invalid %s of size %ld</what>\n",
readwrite(xe->XE.Heap.sszB),
Word__abs(xe->XE.Heap.sszB) );
if (xml) {
- emit( " <kind>Heap</kind>\n");
emit( " <what>%s %s of size %ld</what>\n",
how_invalid,
readwrite(xe->XE.Heap.sszB),
if (xml) {
- emit( " <kind>Arith</kind>\n");
emit( " <what>Invalid arguments to %s</what>\n",
xe->XE.Arith.opname );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
if (xml) {
- emit( " <kind>SysParam</kind>\n");
emit( " <what>%s%s contains unaddressable byte(s)</what>\n",
what, s );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
if (xml) {
- emit( " <kind>SysParam</kind>\n");
emit( " <what>%s%s is non-contiguous</what>\n",
what, s );
VG_(pp_ExeContext)( VG_(get_error_where)(err) );
XError *xe = (XError*)VG_(get_error_extra)(err);
tl_assert(xe);
+ if (xml)
+ emit( " <kind>%s</kind>\n", HG_(get_error_name)(err));
+
switch (VG_(get_error_kind)(err)) {
case XE_Misc: {
if (xml) {
- emit( " <kind>Misc</kind>\n");
emit( " <xwhat>\n" );
emit( " <text>Thread #%d: %s</text>\n",
(Int)xe->XE.Misc.thr->errmsg_index,
if (xml) {
- emit( " <kind>LockOrder</kind>\n");
emit( " <xwhat>\n" );
emit( " <text>Thread #%d: lock order \"%p before %p\" "
"violated</text>\n",
if (xml) {
- emit( " <kind>PthAPIerror</kind>\n");
emit( " <xwhat>\n" );
emit_no_f_c(
" <text>Thread #%d's call to %t failed</text>\n",
if (xml) {
- emit( " <kind>UnlockBogus</kind>\n");
emit( " <xwhat>\n" );
emit( " <text>Thread #%d unlocked an invalid "
"lock at %p</text>\n",
if (xml) {
- emit( " <kind>UnlockForeign</kind>\n");
emit( " <xwhat>\n" );
emit( " <text>Thread #%d unlocked lock at %p "
"currently held by thread #%d</text>\n",
if (xml) {
- emit( " <kind>UnlockUnlocked</kind>\n");
emit( " <xwhat>\n" );
emit( " <text>Thread #%d unlocked a "
"not-locked lock at %p</text>\n",
if (xml) {
/* ------ XML ------ */
- emit( " <kind>Race</kind>\n" );
emit( " <xwhat>\n" );
emit( " <text>Possible data race during %s of size %d "
"at %p by thread #%d</text>\n",