-
161. Data: 2021-09-22 19:24:22
Temat: Re: rzadki bład w programie w C++
Od: Robert Magdziarz <r...@r...e-kei.pl>
Mam pytanie: czy zaobserwowany przeze mnie niedeterminizm błędu (tzn. raz występuje
raz nie - przy tych samych argumentach i danych wejściowych) może wynikać z błędu
logicznego w algorytmie? (przypomnę że w moim algorytmie nie używam generatora liczb
pseudolosowych, dostępu do sieci ani systemu plików - poza danymi wejściowymi).
-
162. Data: 2021-09-22 19:35:09
Temat: Re: rzadki bład w programie w C++
Od: heby <h...@p...onet.pl>
On 22/09/2021 19:24, Robert Magdziarz wrote:
> Mam pytanie: czy zaobserwowany przeze mnie niedeterminizm błędu (tzn. raz występuje
raz nie - przy tych samych argumentach i danych wejściowych) może wynikać z błędu
logicznego w algorytmie?
Z błędu logicznego mógłby wynikać, gdyby algortym zawierał rand().
W innym przypadku *raczej* z błedu implementacji.
Masz gdzieś odczyt niezainicjowanych lub zwolninych wartości. Oczywiście
nie mam pewności, ale przeczucie.
A kompilator nie marudzi, że użyte konstrukcje są niebezpieczne?
Zainteresuj się:
https://elinux.org/Electric_Fence
https://duma.sourceforge.io/
https://en.wikipedia.org/wiki/AddressSanitizer
Użyj clanga i zobacz czy on się inaczej zachowuje.
Przetestuj wszystkie poziomy -O, wliczając w to -Os.
-
163. Data: 2021-09-22 23:22:26
Temat: Re: rzadki bład w programie w C++
Od: Maciek Godek <g...@g...com>
środa, 22 września 2021 o 19:24:23 UTC+2 Robert Magdziarz napisał(a):
> Mam pytanie: czy zaobserwowany przeze mnie niedeterminizm błędu (tzn. raz występuje
raz nie - przy tych samych argumentach i danych wejściowych) może wynikać z błędu
logicznego w algorytmie? (przypomnę że w moim algorytmie nie używam generatora liczb
pseudolosowych, dostępu do sieci ani systemu plików - poza danymi wejściowymi).
Ciężko powiedzieć, jeżeli nie widziało się kodu, ale jeżeli wypróbowałeś wszystkie
dotychczasowe sugestie, i to nie pomogło, to bym się spodziewał, że problem leży w
jakiejś zewnętrznej bibliotece, która może się różnie zachowywać w różnych
okolicznościach.
Wydaje mi się, że rozsądnie byłoby naszpikować wszystkie odwołania do zewnętrznych
bibliotek asercjami, wyrażającymi różne oczekiwane własności danych wejściowych i
wyjściowych (tylko bym zrobił tak, żeby asercja nie wywalała programu, tylko na
przykład logowała, że coś jest nie tak, albo ustawiała breakpoint w debuggerze)
-
164. Data: 2021-10-01 06:24:35
Temat: Re: rzadki bład w programie w C++
Od: Robert Magdziarz <r...@r...e-kei.pl>
środa, 22 września 2021 o 23:22:27 UTC+2 Maciek Godek napisał(a):
> Ciężko powiedzieć, jeżeli nie widziało się kodu
Moim zdaniem algorytm który nie zawiera niedeterministycznych konstrukcji (takich jak
random()) zachowuje się jak funkcja matematyczna, która dla argumentu (danych
wejściowych) zwraca zawsze tą samą wartość (dane wyjściowe). Więc mój program
powinien zwracać zawsze tą samą wartość. Skoro tak nie jest to musi być błąd dostępu
do losowej (niezainicjowanej) pamięci, błąd logiczny algorytmu nie owocowałby różnymi
wartościami wynikowymi. Takie jest moje rozumowanie.
BTW: po polsku jest "trudno powiedzieć", "ciężko powiedzieć" to rusycyzm ("tiażeło
skazat' "), rozpowszechniony niestety.
-
165. Data: 2021-10-01 09:52:32
Temat: Re: rzadki bład w programie w C++
Od: Maciek Godek <g...@g...com>
piątek, 1 października 2021 o 06:24:36 UTC+2 Robert Magdziarz napisał(a):
> BTW: po polsku jest "trudno powiedzieć"
"ciężko powiedzieć" też jest po polsku
> "ciężko powiedzieć" to rusycyzm ("tiażeło skazat' "), rozpowszechniony niestety.
o proszę, a tutaj ktoś twierdzi, że germanizm:
https://sjp.pwn.pl/poradnia/haslo/ciezko-powiedziec;
5723.html
a może po prostu jest tak, że wiele języków odnosi się do tej samej - zakotwiczonej w
podobnym doświadczeniu kulturowym - metafory pojęciowej [por. Lakoff i Johnson,
"Metafory w naszym życiu"], według której "trud = ciężar"?