-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!.POSTED.178.183.113.142.mobile.static.t
-mobile.pl!not-for-mail
From: Marek <f...@f...com>
Newsgroups: pl.misc.elektronika
Subject: Dziwny problem z kodem w C (gcc mips/pic32)
Date: Wed, 17 May 2023 21:23:00 +0200
Organization: ICM, Uniwersytet Warszawski
Message-ID: <a...@n...icm.edu.pl>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Info: news.icm.edu.pl;
posting-host="178.183.113.142.mobile.static.t-mobile.pl:178.183.113.142";
logging-data="1207590"; mail-complaints-to="u...@n...icm.edu.pl"
User-Agent: Groundhog 2.08 Newsreader for Android
http://83.220.108.211/bins/groundhog/
Xref: news-archive.icm.edu.pl pl.misc.elektronika:780595
[ ukryj nagłówki ]Pierwszy raz się spotkałem z czymś takim, o to problematyczny
fragment kodu:
const char *connectionFailureStrings[] = {
"NULL",
/* 0 - not used */
"NULL",
/* 1 - not used */
"WF_JOIN_FAILURE",
/* 2 */
"WF_AUTHENTICATION_FAILURE",
/* 3 */
"WF_ASSOCIATION_FAILURE",
/* 4 */
"WF_WEP_HANDSHAKE_FAILURE",
/* 5 */
"WF_PSK_CALCULATION_FAILURE",
/* 6 */
"WF_PSK_HANDSHAKE_FAILURE",
/* 7 */
"WF_ADHOC_JOIN_FAILURE",
/* 8 */
"WF_SECURITY_MISMATCH_FAILURE", /* 9 */
"WF_NO_SUITABLE_AP_FOUND_FAILURE", /* 10 */
"WF_RETRY_FOREVER_NOT_SUPPORTED_FAILURE"/*11*/
};
static void OutputConnectionFailedMsg(UINT16 eventInfo)
{
UINT8 status;
UINT8 reason;
status = (UINT8)(eventInfo >> 8);
reason = (UINT8)(eventInfo & 0xff);
printf (" status %d
%p\r\n",status,connectionFailureStrings[status]);
printf("WF_Event: Connection Failed: %s
",connectionFailureStrings[status]);
}
Mamy tablicę stringów umieszczoną we flash (pamięci stałej) dzięki
const. Niestety w losowych przypadkach drugi printf generuje wyjątek
adresu z poza zakresu. Zmienna status nie przekracza zakresu i zawsze
nawet jak jest wyjątek ma wartość 3. Okazuje się, że gdy jest
wyjątek to wskaźnik (%p w pierwszym printf) pokazuje jakiś bzdurny
adres, co oczywiście doprowadza do wyjątku w drugim printf. Jak to
możliwe, że adres jest bzdurny??
Przecież tablica jest we flash, adres tutaj powinien być stały i
wygenerowany na etapie kompilacji. Oczywiście w większości przypadków
gdy wszystko jest OK printf pokazuje prawidłowy adres 3 indeksu w tej
tablicy. Ale raz na 10 startów kodu nie... Co ciekawe wygląda na to,
że bzdurny adres pojawia się przy pierwszym uruchomieniu kodu po
flashowaniu mcu ale też nie za każdym razem...
Cały kod jest dość obszerny (75 tys linii), nie ma innych problemów,
to jedyne miejsce, więc chyba można wykluczyć problem z mcu/flash...
--
Marek
Następne wpisy z tego wątku
- 17.05.23 21:43 Jacek Radzikowski
- 17.05.23 22:02 Zbych
- 17.05.23 22:05 Marek
- 17.05.23 22:16 Marek
- 18.05.23 08:55 Janusz
- 18.05.23 12:18 Marek
- 18.05.23 12:44 Janusz
- 18.05.23 13:05 Marek
- 18.05.23 13:08 Dawid Rutkowski
- 18.05.23 13:22 J.F
- 18.05.23 13:29 Grzegorz Niemirowski
- 18.05.23 13:49 heby
- 18.05.23 13:54 Grzegorz Niemirowski
- 18.05.23 14:01 Marek
- 18.05.23 14:13 Dawid Rutkowski
Najnowsze wątki z tej grupy
- Brak bolca ochronnego ładowarki oznacza pożar
- AMS spalony szybkim zasilaczem USB
- stalowe bezpieczniki
- Wyświtlacz ramki cyfrowej
- bateria na żądanie
- pradnica krokowa
- Nieustający podziw...
- Coś dusi.
- akumulator napięcie 12.0v
- Podłączenie DMA 8257 do 8085
- pozew za naprawę sprzętu na youtube
- gasik
- Zbieranie danych przez www
- reverse engineering i dodawanie elementów do istniejących zamkniętych produktów- legalne?
- Problem z odczytem karty CF
Najnowsze wątki
- 2025-01-26 Trump-2 JUŻ bardzo łaskawy [1_500 ułaskawień skazanych za Bidena za "Kawkę na Kapitolu"]
- 2025-01-26 Brak bolca ochronnego ładowarki oznacza pożar
- 2025-01-24 Elektryfikacja w ODWROCIE
- 2025-01-25 AMS spalony szybkim zasilaczem USB
- 2025-01-24 stalowe bezpieczniki
- 2025-01-23 Zenek Kapelinder - ?
- 2025-01-25 Błonie => Sales Specialist <=
- 2025-01-25 Lublin => iOS Developer (Swift) <=
- 2025-01-24 Warszawa => Java Developer <=
- 2025-01-24 Białystok => iOS Developer (Swift experience) <=
- 2025-01-24 Warszawa => Programista Full Stack (.Net Core) <=
- 2025-01-24 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-01-24 Lublin => Delphi Programmer <=
- 2025-01-24 Kraków => Key Account Manager <=
- 2025-01-24 Lublin => Programista Delphi <=