Wpis z mikrobloga

#swift #programowanie

Hej Mireczki!

Mam dość nietypowy problem. Na zdjęciu znajduje się fragment kodu, który za pomocą aproksymacji interpolacyjnej określa wartości punktów pośrednich pewnej funkcji (w sumie to nieistotne). Chodzi o to, że kod ten działa, gdy kompiluję go w trybie Debug, niemniej jednak po skompilowaniu w trybie Release i uruchomieniu programu otrzymuję następujący komunikat (w około 70% przypadków, czasami działa), zatrzymuje się wykonywać na linii 78.:

MNP3(4498,0x1008b53c0) malloc: *** error for object 0x10200e600: incorrect checksum for freed object - object was probably modified after being freed.


Zastanawiacie się pewnie co w linii 76. robi ten print? Otóż ku mojemu zdziwieniu rozwiązuje on problem (no nie do końca, bo tak nie powinno być xd). Odkomentowanie go eliminuje wspomniany problem z pamięcią. Czy ktoś ma jakikolwiek pomysł, dlaczego tak jest (i co mogę na to poradzić)?
Mooops123 - #swift #programowanie

Hej Mireczki!

Mam dość nietypowy problem. Na ...

źródło: comment_EiMIp9BjBXC5VbB26FzaGYItUGh4nDsw.jpg

Pobierz
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Mooops123: zrób breakpoint na malloc error, pierwsze podpowiedzi googla jak to wyszukiwales i powiedz która to konkretnie zmienna się psuje, ten print to przypadek, wyczysciles projekt i budowales od nowa?
  • Odpowiedz
@wczoraj: Projekt buduję od nowa (command+b). Breakpoint pokazał mi tutaj trochę asemblerka:

libsystemmalloc.dylib`mallocerror_break:
-> 0x7fffc193515f <+0>: pushq %rbp
0x7fffc1935160 <+1>: movq %rsp,
  • Odpowiedz
@wczoraj: Używając przycisku "Step out" dwa razy wracam znowu do linii 78.:

predictedPoints.append((predictedDistance, searchedHeight))


za pierwszym naciśnięciem jestem na czymś takim:

-> 0x7fffc1931e81 <+406>: leaq 0xbe88(%rip), %rdi ; "MallocErrorStop"
  • Odpowiedz
@Donald_W: U mnie również działa z +=, niemniej jednak tak zdecydowanie nie powinno być. Wiesz dlaczego tak się dzieje? Jest to choroba wieku dziecięcego Swifta? Bo szczerze mówiąc jak ja mam się obawiać używania takich elementarnych metod jak .append w Stringu, to to nie świadczy dobrze o Swifcie.
  • Odpowiedz
@Mooops123: bardzo mozliwe, ze jest to bug :/ jak znajde chwile to popatrze w zrodla i jak ogarne czemu tak jest to dam znac. Najlepiej to zglos, wszystkim bedzie zylo sie lepiej jak to zalataja ;)
  • Odpowiedz