C glibc memory leaks & errors

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

C glibc memory leaks & errors

Δημοσίευσηαπό Garrus » 28 Νοέμ 2011, 21:55

=(
Το στράκτ μου:
Κώδικας: Επιλογή όλων
typedef struct poly{
int nodenum,tlx,tly,brx,bry;
struct poly *next;
Pixmap a;
node *n[];
}poly;


Η συναρτηση αρχικοποισης: (το Pixmap αρχικοποιειται χωριστα)
Κώδικας: Επιλογή όλων
poly * newpoly(int coor[],int coornum,int topleftx,int toplefty,int botrightx,int botrighty){
int i;

poly * p=(poly *)malloc(sizeof(poly));
p->nodenum = coornum/2;
node **np;
np = (node **)malloc((coornum/2) * sizeof(node*));



for(i=0;i<coornum;i+=2){

np[i/2] = newnode(coor[i],coor[i+1]);
p->n[i/2] = np[i/2];

}
p->next = NULL;
p->tlx = topleftx;
p->brx = botrightx;
p->tly=toplefty;
p->bry=botrighty;

return p;
}



οι τυποι και τα ορισματα:
Κώδικας: Επιλογή όλων
poly * polyvar;
int polycoord[100];
int poly_count=0;
polyvar = newpoly(polycoord, poly_count,x3,y3,x4,y4);



(τα ορισματα ειναι σε σωστες τιμες και τετοια.

Το crash message:
Spoiler: show
Κώδικας: Επιλογή όλων
*** glibc detected *** ./ex2: free(): invalid next size (fast): 0x082e3e90 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6b961)[0x7bd961]
/lib/i386-linux-gnu/libc.so.6(+0x6d28b)[0x7bf28b]
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0x7c241d]
./ex2[0x8049a0b]
./ex2[0x804c5eb]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x768e37]
./ex2[0x8048d41]
======= Memory map: ========
00110000-0012a000 r-xp 00000000 08:05 1662286 /lib/i386-linux-gnu/libgcc_s.so.1
0012a000-0012b000 r--p 00019000 08:05 1662286 /lib/i386-linux-gnu/libgcc_s.so.1
0012b000-0012c000 rw-p 0001a000 08:05 1662286 /lib/i386-linux-gnu/libgcc_s.so.1
00171000-00173000 r-xp 00000000 08:05 1662204 /lib/i386-linux-gnu/libdl-2.13.so
00173000-00174000 r--p 00001000 08:05 1662204 /lib/i386-linux-gnu/libdl-2.13.so
00174000-00175000 rw-p 00002000 08:05 1662204 /lib/i386-linux-gnu/libdl-2.13.so
0017c000-0017d000 r-xp 00000000 00:00 0 [vdso]
0017d000-00293000 r-xp 00000000 08:05 712976 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00293000-00294000 ---p 00116000 08:05 712976 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00294000-00295000 r--p 00116000 08:05 712976 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00295000-00297000 rw-p 00117000 08:05 712976 /usr/lib/i386-linux-gnu/libX11.so.6.3.0
00297000-00298000 rw-p 00000000 00:00 0
0046d000-00491000 r-xp 00000000 08:05 1662206 /lib/i386-linux-gnu/libm-2.13.so
00491000-00492000 r--p 00023000 08:05 1662206 /lib/i386-linux-gnu/libm-2.13.so
00492000-00493000 rw-p 00024000 08:05 1662206 /lib/i386-linux-gnu/libm-2.13.so
00752000-008ac000 r-xp 00000000 08:05 1662188 /lib/i386-linux-gnu/libc-2.13.so
008ac000-008ad000 ---p 0015a000 08:05 1662188 /lib/i386-linux-gnu/libc-2.13.so
008ad000-008af000 r--p 0015a000 08:05 1662188 /lib/i386-linux-gnu/libc-2.13.so
008af000-008b0000 rw-p 0015c000 08:05 1662188 /lib/i386-linux-gnu/libc-2.13.so
008b0000-008b3000 rw-p 00000000 00:00 0
00ab7000-00ace000 r-xp 00000000 08:05 712972 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
00ace000-00acf000 r--p 00016000 08:05 712972 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
00acf000-00ad0000 rw-p 00017000 08:05 712972 /usr/lib/i386-linux-gnu/libxcb.so.1.1.0
00c1e000-00c22000 r-xp 00000000 08:05 712968 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
00c22000-00c23000 r--p 00003000 08:05 712968 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
00c23000-00c24000 rw-p 00004000 08:05 712968 /usr/lib/i386-linux-gnu/libXdmcp.so.6.0.0
00d73000-00d8f000 r-xp 00000000 08:05 1662207 /lib/i386-linux-gnu/ld-2.13.so
00d8f000-00d90000 r--p 0001b000 08:05 1662207 /lib/i386-linux-gnu/ld-2.13.so
00d90000-00d91000 rw-p 0001c000 08:05 1662207 /lib/i386-linux-gnu/ld-2.13.so
00f56000-00f58000 r-xp 00000000 08:05 712964 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
00f58000-00f59000 r--p 00001000 08:05 712964 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
00f59000-00f5a000 rw-p 00002000 08:05 712964 /usr/lib/i386-linux-gnu/libXau.so.6.0.0
08048000-0804f000 r-xp 00000000 08:05 2076709 [path]
0804f000-08050000 r--p 00006000 08:05 2076709 [path]
08050000-08051000 rw-p 00007000 08:05 2076709 [path]
082d8000-082f9000 rw-p 00000000 00:00 0 [heap]
b7600000-b7621000 rw-p 00000000 00:00 0
b7621000-b7700000 ---p 00000000 00:00 0
b77f7000-b77fa000 rw-p 00000000 00:00 0
b780f000-b7812000 rw-p 00000000 00:00 0
bfce4000-bfd05000 rw-p 00000000 00:00 0 [stack]
Aborted
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: C glibc memory leaks & errors

Δημοσίευσηαπό Garrus » 28 Νοέμ 2011, 21:56

Α,σορρυ:
Κώδικας: Επιλογή όλων
node * newnode(int xp,int yp){
node *n;
n = (node*)malloc(sizeof(node));
n->x = xp;
n->y = yp;
return n;
}
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: C glibc memory leaks & errors

Δημοσίευσηαπό simosx » 28 Νοέμ 2011, 22:16

Φτιάξε ένα αποθετήριο στο github με το πλήρες πρόγραμμα (ώστε να αρκεί να τρέξουμε make) για να δούμε το αποτέλεσμα.
Όπως είναι τώρα, κάποιος πρέπει να αφιερώσει 10-20 λεπτά μόνο και μόνο να κάνει το πρόγραμμα να τρέξει.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: C glibc memory leaks & errors

Δημοσίευσηαπό Garrus » 29 Νοέμ 2011, 19:15

Nvm,τελικα το βρηκα.
Αλλαξα στην δομη του poly το μελος απο
node *n[];

σε
node **n;

Και σταματησε.
Τρεχα γυρευε.
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι