dziwny sigsegv

Wojtek Bojdol wojboj w lp.net.pl
Śro, 19 Maj 1999, 09:02:04 CEST



On Wed, 19 May 1999, Jarek Woloszyn wrote:

> Wlasnie mecze sie nad jednym bugiem
>=20
> oto kod programu:
>=20
>       if (tmp_packets[ptrSel->num]!=3DNULL)
>            free(tmp_packets[ptrSel->num]);
>       //tmp_packets[ptrSel->num]=3Dstrdup(pkgs[i].name);
> [1]      tmp_packets[ptrSel->num]=3D(char*) malloc(sizeof(char)*
>                                               (strlen(pkgs[i].name)+2));
>       strcpy(tmp_packets[ptrSel->num],pkgs[i].name);
>=20
> (wczesniej bylo z strdup, ale zmienilem do debugowania)
>=20
> a oto co pokazal gdb na linii [1]=20
>=20
> (gdb) print ptrSel->num
> $2 =3D 12
> (gdb) print tmp_packets[ptrSel->num]
> $3 =3D 0x0
> (gdb) print pkgs[i].name
> $4 =3D 0x809d990 "ircd"
> (gdb) n
>=20
> Program received signal SIGSEGV, Segmentation fault.
> chunk_alloc (ar_ptr=3D0x40114bd0, nb=3D16) at malloc.c:2726
> malloc.c:2726: Nie ma takiego pliku ani katalogu.
chunk_alloc...hmm...:)
znam to....z tym ze ja mialem problemy glownie przy chunk_free...
meczylem sie z tym przy pisaniu cgi (gdzie bylo znacznie trodniejsze do
wylapania)
rozwiazanie jakiego uzylem:
malloc() z libdmalloc -> sciagnij sobie ta biblioteke i z nia linkuj
pewnie pomoze...:)
> i badz tu m=B1dry.=20
hiehie
najgorsze bledy to te nielogiczne..:))
> Najciekawsze jest to, ze w tej samej procce wyzej bawilem sie dokladnie w
> ten sam sposob i wszystko jest ok.=20
:))




Więcej informacji o liście dyskusyjnej pld-installer