{"id":1068,"date":"2012-03-14T19:30:16","date_gmt":"2012-03-14T23:30:16","guid":{"rendered":"https:\/\/clarionsharp.com\/blog\/?p=1068"},"modified":"2012-05-07T19:02:10","modified_gmt":"2012-05-07T19:02:10","slug":"tracking-down-those-pesky-gpfs","status":"publish","type":"post","link":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/","title":{"rendered":"Tracking down those pesky GPFs"},"content":{"rendered":"<p>Coming up in the next C8 release we&#8217;ll be providing you with some help for tracking down those pesky GPFs.\u00a0 We&#8217;ll be shipping two variants of the RTL; one the regular RTL, and the other RTL variant with some code added to read embedded debug info, and to decode the names of functions in the call stack and associated line number information.\u00a0 The decoder-enabled RTL is a drop-in replacement, so you can just copy it over the standard RTL and that&#8217;s it.<\/p>\n<p style=\"text-align: left;\">Let&#8217;s take a look at what it gives you, here is a simple program that creates a GPF<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"426\" height=\"576\" class=\" wp-image-1069 aligncenter\" title=\"MakeAGPF\" src=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png\" alt=\"Program code to force a GPF\" srcset=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png 426w, https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1-221x300.png 221w\" sizes=\"auto, (max-width: 426px) 100vw, 426px\" \/><\/a><\/p>\n<p>On line 9 we declared a LONG with 8 dimensions, but look at line 29,it&#8217;s not hard to accidentally introduce an error like this, and a lot harder to track it down when it only fails intermittently at a customer site.\u00a0 This what we get if we run this program when compiled with debug info:<\/p>\n<p style=\"text-align: center;\"><a href=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/TrackGPF1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1070\" title=\"TrackGPF\" src=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/TrackGPF1.png\" alt=\"GPF with debug info decoded at runtime\" width=\"645\" height=\"670\" srcset=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/TrackGPF1.png 645w, https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/TrackGPF1-288x300.png 288w\" sizes=\"auto, (max-width: 645px) 100vw, 645px\" \/><\/a><\/p>\n<p style=\"text-align: left;\">As you can see our LOOP causes a GPF because it attempts to access a dimension that does not exist &#8211; but with the debug info decoded at runtime we immediately see exactly which line of code caused the problem, as well as seeing the entire call stack.\u00a0 For those who like to stay away from long debug sessions (and who doesn&#8217;t) this will be very handy.\u00a0 Your end-user can just press the &#8220;Log info&#8221; button and send you the log text file and then it&#8217;s ball in your court. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Coming up in the next C8 release we&#8217;ll be providing you with some help for tracking down those pesky GPFs.\u00a0 We&#8217;ll be shipping two variants of the RTL; one the regular RTL, and the other RTL variant with some code added to read embedded debug info, and to decode the names of functions in the &hellip; <a href=\"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Tracking down those pesky GPFs<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1068","post","type-post","status-publish","format-standard","hentry","category-clarionnews"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tracking down those pesky GPFs - Clarion<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tracking down those pesky GPFs - Clarion\" \/>\n<meta property=\"og:description\" content=\"Coming up in the next C8 release we&#8217;ll be providing you with some help for tracking down those pesky GPFs.\u00a0 We&#8217;ll be shipping two variants of the RTL; one the regular RTL, and the other RTL variant with some code added to read embedded debug info, and to decode the names of functions in the &hellip; Continue reading Tracking down those pesky GPFs &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/\" \/>\n<meta property=\"og:site_name\" content=\"Clarion\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/softvelocity\/\" \/>\n<meta property=\"article:published_time\" content=\"2012-03-14T23:30:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-05-07T19:02:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png\" \/>\n<meta name=\"author\" content=\"rzaunere\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"rzaunere\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/\"},\"author\":{\"name\":\"rzaunere\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#\\\/schema\\\/person\\\/b90e860529aea05ad064cf2687697ce3\"},\"headline\":\"Tracking down those pesky GPFs\",\"datePublished\":\"2012-03-14T23:30:16+00:00\",\"dateModified\":\"2012-05-07T19:02:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/\"},\"wordCount\":248,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/MakeAGPF1.png\",\"articleSection\":[\"Clarion News\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/\",\"url\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/\",\"name\":\"Tracking down those pesky GPFs - Clarion\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/MakeAGPF1.png\",\"datePublished\":\"2012-03-14T23:30:16+00:00\",\"dateModified\":\"2012-05-07T19:02:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/MakeAGPF1.png\",\"contentUrl\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/wp-content\\\/uploads\\\/2012\\\/03\\\/MakeAGPF1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/tracking-down-those-pesky-gpfs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tracking down those pesky GPFs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/\",\"name\":\"Clarion\",\"description\":\"Deliver your software on time, every time\",\"publisher\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#organization\",\"name\":\"SoftVelocity\",\"url\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/svlogonew57.png\",\"contentUrl\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/svlogonew57.png\",\"width\":221,\"height\":57,\"caption\":\"SoftVelocity\"},\"image\":{\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/softvelocity\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/SoftVelocity\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/#\\\/schema\\\/person\\\/b90e860529aea05ad064cf2687697ce3\",\"name\":\"rzaunere\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/91d95e38759c411d27f646b60da7f4769ce91e87b484669af240e51c729b1e7c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/91d95e38759c411d27f646b60da7f4769ce91e87b484669af240e51c729b1e7c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/91d95e38759c411d27f646b60da7f4769ce91e87b484669af240e51c729b1e7c?s=96&d=mm&r=g\",\"caption\":\"rzaunere\"},\"url\":\"https:\\\/\\\/clarionsharp.com\\\/blog\\\/author\\\/rzaunere\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tracking down those pesky GPFs - Clarion","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/","og_locale":"en_US","og_type":"article","og_title":"Tracking down those pesky GPFs - Clarion","og_description":"Coming up in the next C8 release we&#8217;ll be providing you with some help for tracking down those pesky GPFs.\u00a0 We&#8217;ll be shipping two variants of the RTL; one the regular RTL, and the other RTL variant with some code added to read embedded debug info, and to decode the names of functions in the &hellip; Continue reading Tracking down those pesky GPFs &rarr;","og_url":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/","og_site_name":"Clarion","article_publisher":"https:\/\/www.facebook.com\/softvelocity\/","article_published_time":"2012-03-14T23:30:16+00:00","article_modified_time":"2012-05-07T19:02:10+00:00","og_image":[{"url":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png","type":"","width":"","height":""}],"author":"rzaunere","twitter_card":"summary_large_image","twitter_misc":{"Written by":"rzaunere","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#article","isPartOf":{"@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/"},"author":{"name":"rzaunere","@id":"https:\/\/clarionsharp.com\/blog\/#\/schema\/person\/b90e860529aea05ad064cf2687697ce3"},"headline":"Tracking down those pesky GPFs","datePublished":"2012-03-14T23:30:16+00:00","dateModified":"2012-05-07T19:02:10+00:00","mainEntityOfPage":{"@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/"},"wordCount":248,"commentCount":0,"publisher":{"@id":"https:\/\/clarionsharp.com\/blog\/#organization"},"image":{"@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#primaryimage"},"thumbnailUrl":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png","articleSection":["Clarion News"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/","url":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/","name":"Tracking down those pesky GPFs - Clarion","isPartOf":{"@id":"https:\/\/clarionsharp.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#primaryimage"},"image":{"@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#primaryimage"},"thumbnailUrl":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png","datePublished":"2012-03-14T23:30:16+00:00","dateModified":"2012-05-07T19:02:10+00:00","breadcrumb":{"@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#primaryimage","url":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png","contentUrl":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2012\/03\/MakeAGPF1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/clarionsharp.com\/blog\/tracking-down-those-pesky-gpfs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/clarionsharp.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tracking down those pesky GPFs"}]},{"@type":"WebSite","@id":"https:\/\/clarionsharp.com\/blog\/#website","url":"https:\/\/clarionsharp.com\/blog\/","name":"Clarion","description":"Deliver your software on time, every time","publisher":{"@id":"https:\/\/clarionsharp.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/clarionsharp.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/clarionsharp.com\/blog\/#organization","name":"SoftVelocity","url":"https:\/\/clarionsharp.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/clarionsharp.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2019\/03\/svlogonew57.png","contentUrl":"https:\/\/clarionsharp.com\/blog\/wp-content\/uploads\/2019\/03\/svlogonew57.png","width":221,"height":57,"caption":"SoftVelocity"},"image":{"@id":"https:\/\/clarionsharp.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/softvelocity\/","https:\/\/www.youtube.com\/user\/SoftVelocity"]},{"@type":"Person","@id":"https:\/\/clarionsharp.com\/blog\/#\/schema\/person\/b90e860529aea05ad064cf2687697ce3","name":"rzaunere","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/91d95e38759c411d27f646b60da7f4769ce91e87b484669af240e51c729b1e7c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/91d95e38759c411d27f646b60da7f4769ce91e87b484669af240e51c729b1e7c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/91d95e38759c411d27f646b60da7f4769ce91e87b484669af240e51c729b1e7c?s=96&d=mm&r=g","caption":"rzaunere"},"url":"https:\/\/clarionsharp.com\/blog\/author\/rzaunere\/"}]}},"_links":{"self":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/1068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/comments?post=1068"}],"version-history":[{"count":2,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/1068\/revisions"}],"predecessor-version":[{"id":1081,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/posts\/1068\/revisions\/1081"}],"wp:attachment":[{"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/media?parent=1068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/categories?post=1068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clarionsharp.com\/blog\/wp-json\/wp\/v2\/tags?post=1068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}