+static int compare_local_variables(char *s1, char *s2, xbt_dynar_t heap_equals){
+
+ xbt_dynar_t tokens1 = xbt_str_split(s1, NULL);
+ xbt_dynar_t tokens2 = xbt_str_split(s2, NULL);
+
+ xbt_dynar_t s_tokens1, s_tokens2;
+ unsigned int cursor = 0;
+ void *addr1, *addr2;
+
+ int diff = 0;
+
+ while(cursor < xbt_dynar_length(tokens1)){
+ s_tokens1 = xbt_str_split(xbt_dynar_get_as(tokens1, cursor, char *), "=");
+ s_tokens2 = xbt_str_split(xbt_dynar_get_as(tokens2, cursor, char *), "=");
+ if(xbt_dynar_length(s_tokens1) > 1 && xbt_dynar_length(s_tokens2) > 1){
+ if(strcmp(xbt_dynar_get_as(s_tokens1, 1, char *), xbt_dynar_get_as(s_tokens2, 1, char *)) != 0){
+ addr1 = (void *) strtoul(xbt_dynar_get_as(s_tokens1, 1, char *), NULL, 16);
+ addr2 = (void *) strtoul(xbt_dynar_get_as(s_tokens2, 1, char *), NULL, 16);
+ if(is_heap_equality(heap_equals, addr1, addr2) == 0){
+ XBT_INFO("Variable %s is different between stacks : %s - %s", xbt_dynar_get_as(s_tokens1, 0, char *), xbt_dynar_get_as(s_tokens1, 1, char *), xbt_dynar_get_as(s_tokens2, 1, char *));
+ diff++;
+ }
+ }
+ }
+ cursor++;
+ }
+
+ return diff;
+
+}
+