[Barrelfish-users] [New release] free() error

Kornilios Kourtis kornilios.kourtis at inf.ethz.ch
Mon Apr 1 17:33:54 CEST 2013


Hi Georgios,

On Sat, Mar 30, 2013 at 09:25:22PM +0000, Georgios Varisteas wrote:
> Hi,
> 
> First of all some more details. I have some benchmarking programs (BOTS) with the following structure:
> 
> v1 = alloc(...);
> v2 = alloc(...);
> 
> do stuff...
> 
> free(v1);
> free(v2);
> 
> It is that second call to free that crashes. The order of the calls to
> free doesn't matter. If I remove any one of the two or both calls, all
> programs run. What is weird to me is that (having removed one of these
> calls) multiple subsequent calls to free from different parts of the
> app and not on consecutive blocks, do not cause a crash.
> 
> So I did some digging and I pinpointed the error at
> ./barrelfish/slot_alloc/single_slot_alloc.c:106 due to slab_alloc()
> returning NULL. The reason for that is that the head is NULL
> (./lib/barrelfish/slab.c:91) and not the refill function which is
> constantly NULL (./lib/barrelfish/slot_alloc/single_slot_alloc.c:144).

I think I've found the bug. The slab size allocated for nodes in the ->head
list in single_slot_alloc is the number of slots divided by 2 to accommodate
for the worst case.  Each node in the list maintains a range of slots so the
worst case scenario is having only odd (or even) slots in the list.

However, it seems that a possible merge of nodes was overlooked.  Can you
please try the following (admittedly not tested beyond booting qemu) patch:

diff --git a/lib/barrelfish/slot_alloc/single_slot_alloc.c b/lib/barrelfish/slot_alloc/single_slot_alloc.c
index 56e4d70..9a9a61f 100644
--- a/lib/barrelfish/slot_alloc/single_slot_alloc.c
+++ b/lib/barrelfish/slot_alloc/single_slot_alloc.c
@@ -92,6 +92,15 @@ static errval_t sfree(struct slot_allocator *ca, struct capref cap)
         // Freeing at the edge of walk
         if (cap.slot == walk->slot + walk->space) {
             walk->space++;
+
+            // check if we can merge walk to next
+            struct cnode_meta *next = walk->next;
+            if (next && next->slot == walk->slot + walk->space) {
+                walk->space += next->space;
+                walk->next = next->next;
+                slab_free(&sca->slab, next);
+            }
+
             goto finish;
         }
         else if (cap.slot < walk->slot + walk->space) {


cheers,
Kornilios.


> 
> Moreover I traced the slots (listing at the end) and although I know very little on how these mappings work, I see an overlapping between the two variables being freed which I suspect should not be there. Specifically freeing variable 1 ends with slot 292 while freeing variable 2 starts with slot 290. As I said this is a totally uneducated guess.
> 
> At this point I can think plenty of workarounds but without understanding what is actually being done, I can't suggest a solution. Any more pointers?
> 
> 
> cheers,
> Georgios
> 
> 
> debug_printf(" %p %u %p %p **\n", walk->next, cap.slot, new, sca->slab.refill_func);
> 
> pond20.20: ** freeing variable 1 **
> pond20.20: 0x80a8d5d8 805 0x80a8d590 0x0 **
> pond20.20: 0x80a8d5f0 807 0x80a8d590 0x0 **
> pond20.20: 0x80a8d608 809 0x80a8d590 0x0 **
> pond20.20: 0x80a8d620 811 0x80a8d590 0x0 **
> pond20.20: 0x80a8d638 813 0x80a8d590 0x0 **
> pond20.20: 0x80a8d650 815 0x80a8d590 0x0 **
> pond20.20: 0x80a8d668 817 0x80a8d590 0x0 **
> pond20.20: 0x80a8d680 819 0x80a8d590 0x0 **
> pond20.20: 0x80a8d698 821 0x80a8d590 0x0 **
> pond20.20: 0x80a8d6b0 823 0x80a8d590 0x0 **
> pond20.20: 0x80a8d6c8 825 0x80a8d590 0x0 **
> pond20.20: 0x80a8d6e0 827 0x80a8d590 0x0 **
> pond20.20: 0x80a8d6f8 829 0x80a8d590 0x0 **
> pond20.20: 0x80a8d710 831 0x80a8d590 0x0 **
> pond20.20: 0x80a8d728 833 0x80a8d590 0x0 **
> pond20.20: 0x80a8d740 835 0x80a8d590 0x0 **
> pond20.20: 0x80a8d758 837 0x80a8d590 0x0 **
> pond20.20: 0x80a8d770 839 0x80a8d590 0x0 **
> pond20.20: 0x80a8d788 841 0x80a8d590 0x0 **
> pond20.20: 0x80a8d7a0 843 0x80a8d590 0x0 **
> pond20.20: 0x80a8d7b8 845 0x80a8d590 0x0 **
> pond20.20: 0x80a8d7d0 847 0x80a8d590 0x0 **
> pond20.20: 0x80a8d7e8 849 0x80a8d590 0x0 **
> pond20.20: 0x80a8d800 851 0x80a8d590 0x0 **
> pond20.20: 0x80a8d818 853 0x80a8d590 0x0 **
> pond20.20: 0x80a8d830 855 0x80a8d590 0x0 **
> pond20.20: 0x80a8d848 857 0x80a8d590 0x0 **
> pond20.20: 0x80a8d860 859 0x80a8d590 0x0 **
> pond20.20: 0x80a8d878 861 0x80a8d590 0x0 **
> pond20.20: 0x80a8d890 863 0x80a8d590 0x0 **
> pond20.20: 0x80a8d8a8 865 0x80a8d590 0x0 **
> pond20.20: 0x80a8d8c0 867 0x80a8d590 0x0 **
> pond20.20: 0x80a8d8d8 869 0x80a8d590 0x0 **
> pond20.20: 0x80a8d8f0 871 0x80a8d590 0x0 **
> pond20.20: 0x80a8d908 873 0x80a8d590 0x0 **
> pond20.20: 0x80a8d920 875 0x80a8d590 0x0 **
> pond20.20: 0x80a8d938 877 0x80a8d590 0x0 **
> pond20.20: 0x80a8d950 879 0x80a8d590 0x0 **
> pond20.20: 0x80a8d968 881 0x80a8d590 0x0 **
> pond20.20: 0x80a8d980 883 0x80a8d590 0x0 **
> pond20.20: 0x80a8d998 885 0x80a8d590 0x0 **
> pond20.20: 0x80a8d9b0 887 0x80a8d590 0x0 **
> pond20.20: 0x80a8d9c8 889 0x80a8d590 0x0 **
> pond20.20: 0x80a8d9e0 891 0x80a8d590 0x0 **
> pond20.20: 0x80a8d9f8 893 0x80a8d590 0x0 **
> pond20.20: 0x80a8da10 895 0x80a8d590 0x0 **
> pond20.20: 0x80a8da28 897 0x80a8d590 0x0 **
> pond20.20: 0x80a8da40 899 0x80a8d590 0x0 **
> pond20.20: 0x80a8da58 901 0x80a8d590 0x0 **
> pond20.20: 0x80a8da70 903 0x80a8d590 0x0 **
> pond20.20: 0x80a8da88 905 0x80a8d590 0x0 **
> pond20.20: 0x80a8daa0 907 0x80a8d590 0x0 **
> pond20.20: 0x80a8dab8 909 0x80a8d590 0x0 **
> pond20.20: 0x80a8dad0 911 0x80a8d590 0x0 **
> pond20.20: 0x80a8dae8 913 0x80a8d590 0x0 **
> pond20.20: 0x80a8db00 915 0x80a8d590 0x0 **
> pond20.20: 0x80a8db18 917 0x80a8d590 0x0 **
> pond20.20: 0x80a8db30 919 0x80a8d590 0x0 **
> pond20.20: 0x80a8db48 921 0x80a8d590 0x0 **
> pond20.20: 0x80a8db60 923 0x80a8d590 0x0 **
> pond20.20: 0x80a8db78 925 0x80a8d590 0x0 **
> pond20.20: 0x80a8db90 927 0x80a8d590 0x0 **
> pond20.20: 0x80a8dba8 929 0x80a8d590 0x0 **
> pond20.20: 0x80a8dbc0 931 0x80a8d590 0x0 **
> pond20.20: 0x80a8dbd8 933 0x80a8d590 0x0 **
> pond20.20: 0x80a8dbf0 935 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc08 937 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc20 939 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc38 941 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc50 943 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc68 945 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc80 947 0x80a8d590 0x0 **
> pond20.20: 0x80a8dc98 949 0x80a8d590 0x0 **
> pond20.20: 0x80a8dcb0 951 0x80a8d590 0x0 **
> pond20.20: 0x80a8dcc8 953 0x80a8d590 0x0 **
> pond20.20: 0x80a8dce0 955 0x80a8d590 0x0 **
> pond20.20: 0x80a8dcf8 957 0x80a8d590 0x0 **
> pond20.20: 0x80a8dd10 959 0x80a8d590 0x0 **
> pond20.20: 0x80a8dd28 961 0x80a8d590 0x0 **
> pond20.20: 0x80a8dd40 963 0x80a8d590 0x0 **
> pond20.20: 0x80a8dd58 965 0x80a8d590 0x0 **
> pond20.20: 0x80a8dd70 967 0x80a8d590 0x0 **
> pond20.20: 0x80a8dd88 969 0x80a8d590 0x0 **
> pond20.20: 0x80a8dda0 971 0x80a8d590 0x0 **
> pond20.20: 0x80a8ddb8 973 0x80a8d590 0x0 **
> pond20.20: 0x80a8ddd0 975 0x80a8d590 0x0 **
> pond20.20: 0x80a8dde8 977 0x80a8d590 0x0 **
> pond20.20: 0x80a8de00 979 0x80a8d590 0x0 **
> pond20.20: 0x80a8de18 981 0x80a8d590 0x0 **
> pond20.20: 0x80a8de30 983 0x80a8d590 0x0 **
> pond20.20: 0x80a8de48 985 0x80a8d590 0x0 **
> pond20.20: 0x80a8de60 987 0x80a8d590 0x0 **
> pond20.20: 0x80a8de78 989 0x80a8d590 0x0 **
> pond20.20: 0x80a8de90 991 0x80a8d590 0x0 **
> pond20.20: 0x80a8dea8 993 0x80a8d590 0x0 **
> pond20.20: 0x80a8dec0 995 0x80a8d590 0x0 **
> pond20.20: 0x80a8ded8 997 0x80a8d590 0x0 **
> pond20.20: 0x80a8def0 999 0x80a8d590 0x0 **
> pond20.20: 0x80a8df08 1001 0x80a8d590 0x0 **
> pond20.20: 0x80a8df20 1003 0x80a8d590 0x0 **
> pond20.20: 0x80a8df38 1005 0x80a8d590 0x0 **
> pond20.20: 0x80a8df50 1007 0x80a8d590 0x0 **
> pond20.20: 0x80a8df68 1009 0x80a8d590 0x0 **
> pond20.20: 0x80a8df80 1011 0x80a8d590 0x0 **
> pond20.20: 0x80a8df98 1013 0x80a8d590 0x0 **
> pond20.20: 0x80a8dfb0 1015 0x80a8d590 0x0 **
> pond20.20: 0x80a8dfc8 1017 0x80a8d590 0x0 **
> pond20.20: 0x80a8dfe0 1019 0x80a8d590 0x0 **
> pond20.20: 0x80a8f5d8 5 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f5f0 7 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f608 9 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f620 11 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f638 13 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f650 15 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f668 17 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f680 19 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f698 21 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f6b0 23 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f6c8 25 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f6e0 27 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f6f8 29 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f710 31 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f728 33 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f740 37 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f758 40 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f770 42 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f788 44 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f7a0 46 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f7b8 48 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f7d0 50 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f7e8 52 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f800 54 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f818 56 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f830 58 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f848 60 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f860 62 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f878 64 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f890 66 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f8a8 68 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f8c0 70 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f8d8 72 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f8f0 74 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f908 76 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f920 78 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f938 80 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f950 82 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f968 84 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f980 86 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f998 88 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f9b0 90 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f9c8 92 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f9e0 94 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8f9f8 96 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fa10 98 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fa28 100 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fa40 102 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fa58 104 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fa70 106 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fa88 108 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8faa0 110 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fab8 112 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fad0 114 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fae8 116 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb00 118 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb18 120 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb30 122 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb48 124 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb60 126 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb78 128 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fb90 130 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fba8 132 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fbc0 134 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fbd8 136 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fbf0 138 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc08 140 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc20 142 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc38 144 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc50 146 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc68 148 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc80 150 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fc98 152 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fcb0 154 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fcc8 156 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fce0 158 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fcf8 160 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fd10 162 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fd28 164 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fd40 166 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fd58 168 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fd70 170 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fd88 172 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fda0 174 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fdb8 176 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fdd0 178 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fde8 180 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe00 182 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe18 184 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe30 186 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe48 188 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe60 190 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe78 192 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fe90 194 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fea8 196 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fec0 198 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fed8 200 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fef0 202 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff08 204 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff20 206 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff38 208 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff50 210 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff68 212 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff80 214 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ff98 216 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ffb0 218 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ffc8 220 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8ffe0 222 0x80a8f5a8 0x0 **
> pond20.20: 0x80a8fff8 224 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90010 226 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90028 228 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90040 230 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90058 232 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90070 234 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90088 236 0x80a8f5a8 0x0 **
> pond20.20: 0x80a900a0 238 0x80a8f5a8 0x0 **
> pond20.20: 0x80a900b8 240 0x80a8f5a8 0x0 **
> pond20.20: 0x80a900d0 242 0x80a8f5a8 0x0 **
> pond20.20: 0x80a900e8 244 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90100 246 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90118 248 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90130 250 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90148 252 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90160 254 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90178 256 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90190 258 0x80a8f5a8 0x0 **
> pond20.20: 0x80a901a8 260 0x80a8f5a8 0x0 **
> pond20.20: 0x80a901c0 262 0x80a8f5a8 0x0 **
> pond20.20: 0x80a901d8 264 0x80a8f5a8 0x0 **
> pond20.20: 0x80a901f0 266 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90208 268 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90220 270 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90238 272 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90250 274 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90268 276 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90280 278 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90298 280 0x80a8f5a8 0x0 **
> pond20.20: 0x80a902b0 282 0x80a8f5a8 0x0 **
> pond20.20: 0x80a902c8 284 0x80a8f5a8 0x0 **
> pond20.20: 0x80a902e0 286 0x80a8f5a8 0x0 **
> pond20.20: 0x80a902f8 288 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90310 290 0x80a8f5a8 0x0 **
> pond20.20: 0x80a90328 292 0x80a8f5a8 0x0 **
> 
> 
> pond20.20: ** freeing variable 2 **
> pond20.20: 0x80a8e028 290 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e040 292 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e058 294 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e070 296 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e088 298 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e0a0 300 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e0b8 302 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e0d0 304 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e0e8 306 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e100 308 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e118 310 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e130 312 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e148 314 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e160 316 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e178 318 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e190 320 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e1a8 322 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e1c0 324 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e1d8 326 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e1f0 328 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e208 330 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e220 332 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e238 334 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e250 336 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e268 338 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e280 340 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e298 342 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e2b0 344 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e2c8 346 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e2e0 348 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e2f8 350 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e310 352 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e328 354 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e340 356 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e358 358 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e370 360 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e388 362 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e3a0 364 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e3b8 366 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e3d0 368 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e3e8 370 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e400 372 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e418 374 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e430 376 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e448 378 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e460 380 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e478 382 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e490 384 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e4a8 386 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e4c0 388 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e4d8 390 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e4f0 392 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e508 394 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e520 396 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e538 398 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e550 400 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e568 402 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e580 404 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e598 406 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e5b0 408 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e5c8 410 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e5e0 412 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e5f8 414 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e610 416 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e628 418 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e640 420 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e658 422 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e670 424 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e688 426 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e6a0 428 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e6b8 430 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e6d0 432 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e6e8 434 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e700 436 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e718 438 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e730 440 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e748 442 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e760 444 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e778 446 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e790 448 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e7a8 450 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e7c0 452 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e7d8 454 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e7f0 456 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e808 458 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e820 460 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e838 462 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e850 464 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e868 466 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e880 468 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e898 470 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e8b0 472 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e8c8 474 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e8e0 476 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e8f8 478 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e910 480 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e928 482 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e940 484 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e958 486 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e970 488 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e988 490 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e9a0 492 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e9b8 494 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e9d0 496 0x80a8dff8 0x0 **
> pond20.20: 0x80a8e9e8 498 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea00 500 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea18 502 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea30 504 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea48 506 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea60 508 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea78 510 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ea90 512 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eaa8 514 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eac0 516 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ead8 518 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eaf0 520 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb08 522 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb20 524 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb38 526 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb50 528 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb68 530 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb80 532 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eb98 534 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ebb0 536 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ebc8 538 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ebe0 540 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ebf8 542 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ec10 544 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ec28 546 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ec40 548 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ec58 550 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ec70 552 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ec88 554 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eca0 556 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ecb8 558 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ecd0 560 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ece8 562 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed00 564 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed18 566 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed30 568 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed48 570 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed60 572 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed78 574 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ed90 576 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eda8 578 0x80a8dff8 0x0 **
> pond20.20: 0x80a8edc0 580 0x80a8dff8 0x0 **
> pond20.20: 0x80a8edd8 582 0x80a8dff8 0x0 **
> pond20.20: 0x80a8edf0 584 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee08 586 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee20 588 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee38 590 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee50 592 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee68 594 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee80 596 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ee98 598 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eeb0 600 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eec8 602 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eee0 604 0x80a8dff8 0x0 **
> pond20.20: 0x80a8eef8 606 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ef10 608 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ef28 610 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ef40 612 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ef58 614 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ef70 616 0x80a8dff8 0x0 **
> pond20.20: 0x80a8ef88 618 0x80a8dff8 0x0 **
> pond20.20: 0x80a8efa0 620 0x80a8dff8 0x0 **
> pond20.20: 0x80a8efb8 622 0x80a8dff8 0x0 **
> pond20.20: 0x80a8efd0 624 0x80a8dff8 0x0 **
> pond20.20: 0x80a8efe8 626 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f000 628 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f018 630 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f030 632 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f048 634 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f060 636 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f078 638 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f090 640 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f0a8 642 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f0c0 644 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f0d8 646 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f0f0 648 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f108 650 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f120 652 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f138 654 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f150 656 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f168 658 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f180 660 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f198 662 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f1b0 664 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f1c8 666 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f1e0 668 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f1f8 670 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f210 672 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f228 674 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f240 676 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f258 678 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f270 680 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f288 682 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f2a0 684 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f2b8 686 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f2d0 688 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f2e8 690 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f300 692 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f318 694 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f330 696 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f348 698 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f360 700 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f378 702 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f390 704 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f3a8 706 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f3c0 708 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f3d8 710 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f3f0 712 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f408 714 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f420 716 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f438 718 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f450 720 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f468 722 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f480 724 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f498 726 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f4b0 728 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f4c8 730 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f4e0 732 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f4f8 734 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f510 736 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f528 738 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f540 740 0x80a8dff8 0x0 **
> pond20.20: 0x80a8f558 742 0x80a8dff8 0x0 **
> pond20.20: 0x0 744 0x80a8dff8 0x0 **
> kernel 20: user page fault in 'pond20': addr 0 IP 4d49dc SP a80062b1140 error 0x6
> 
> 
> 
> ________________________________________
> From: Kornilios Kourtis [kornilios.kourtis at inf.ethz.ch]
> Sent: Saturday, March 30, 2013 16:33
> To: Georgios Varisteas
> Cc: barrelfish-users at lists.inf.ethz.ch
> Subject: Re: [Barrelfish-users] [New release] free() error
> 
> Hi Georgios,
> 
> On Wed, Mar 27, 2013 at 08:10:22PM +0000, Georgios Varisteas wrote:
> > Hi,
> >
> > Using code that run before updating, I now get a page fault while
> > freeing memory. The same code runs correctly on linux and I get no
> > messages from valgrind neither. Thus it should be something internal.
> > kernel 20: user page fault in 'pond20': addr 0 IP 4d3c8d SP a80062b1120 error 0x6
> >
> > Although I attached the disassembled portion below, I assume the error
> > is at ./lib/barrelfish/slot_alloc/single_slot_alloc.c:117.
> >
> > Actually this is the last of a series of 3 calls to free() and since
> > allocations were also done consecutively the addresses are consecutive.
> >
> > I can spend time to fix this myself but I'd like some pointers.
> >
> > cheers,
> > Georgios
> >
> >
> > 00000000004d3b10 <sfree>:
> [snip]
> >   4d3c84:       e8 27 64 f9 ff          callq  46a0b0 <slab_alloc>
> >   4d3c89:       49 89 46 08             mov    %rax,0x8(%r14)
> >
> > ->4d3c8d:       44 89 28                mov    %r13d,(%rax)
> 
> Not sure how much this will help, but the problem seems to be that
> slab_alloc() returns NULL, which is not checked in sfree(), causing a
> segfault when trying to dereference the returned pointer.
> 
> slab_alloc() returns NULL if:
>  a) no refill function (->refill_func) exists, or
>  b) calling ->refill_func did not result in new free blocks.
> 
> A first suggestion would be to try and see if we are dealing with a) or
> b).
> 
> cheers,
> Kornilios.
> 
> --
> Kornilios Kourtis
> 
> _______________________________________________
> Barrelfish-users mailing list
> Barrelfish-users at lists.inf.ethz.ch
> https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users

-- 
Kornilios Kourtis



More information about the Barrelfish-users mailing list