🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux.programowanie
Article #72958

Re: ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: Nie ma takiego pliku ani katalogu

#72958
From: RM
Date: Thu, 20 Aug 2020 11:48
55 lines
3898 bytes
W dniu 20.08.2020 o 12:11, Bogdan pisze:
> W dniu 20.08.2020 o 10:39, Mateusz Viste pisze:
>> 2020-08-20 o 10:21 +0200, RM napisał:
>>> Jak dam tak:
>>>       php_result_dir = ""; // w konstruktorze
>>> ...
>>>       TRACE("php_result_dir before:" << php_result_dir);
>>>       assert(php_result_dir.empty());
>>>       php_result_dir = argv[2]; // TU BŁĄD!!!
>>> to mam assert failed, a TRACE wypisuje pusty string to dwukropku.
>>> Nie wiem o co chodzi.
>>
>> Sory, też nie wiem. To C++ jest, a ja ogarniam tylko C (bez plusów),
>> zupełnie nie wiem jak te plusowe stringi powinny działać. Ew. zapytaj na
>> pl.comp.lang.c, bo problem raczej nie jest specyficznie linuksowy.
>> Jeśli zapytasz tam, podaj również swoją deklarację php_result_dir oraz
>> sposób w jaki to allokujesz (jeśli w ogóle).
>>
>> Mateusz
>>
> 
> 
>   Podłączam się pod to, zwłaszcza ostatnie zdanie.
>   Nie będę udawał, że jestem jakiś C++ master (też wolę C), ale w C++
> można przeciążyć operator, taki jak "=", i ma to miejsce też w
> przypadku klasy string. Linia "php_result_dir = argv[2]" wywołuje kod
> z klasy string, który potem różnymi ścieżkami trafia do metody
> _M_replace(), którą widać na stack trace.
>   Jako że nie ma tu przypisania "string = string", tylko "string =
> char*", to tak tylko zgaduję, że php_result_dir musi być już
> zainicjalizowana na cokolwiek (aby wewnętrzna struktura do trzymania
> zawartości była już zaallokowana), bo pewniee kopiowanie string-string
> jest zaimplementowane prościej. Niby to już masz, ale nie mogę
> odtworzyć tego problemu u siebie (g++ 9.2.1).
>   Mój szybki test pokazuje, że nie musi chodzić akurat o alokację (tj.
> mój przypadek testowy się nie wywala), więc może rolę gra tu coś
> jeszcze. Może php_result_dir miał już przypisaną wartość, ale w
> międzyczasie wewnętrzny wskaźnik (czy cokolwiek) został
> zresetowany/popsuty/zmieniony na NULL i na tym właśnie pada memmove().
> Operator << też jest przeciążony, a pusty wynik może oznaczać wiele
> rzeczy: niezaallokowana zmienna, pusta tablica, NULL i może jeszcze
> coś. To już zależy od implementacji klasy string, co ona w takich
> przypadkach wyświetla.
>   A co jest w argv[2]? Może NULL lub pusty string i to coś psuje?
> 
> 
kod:
	TRACE("php_result_dir before:" << php_result_dir.length() << ",argv[2] 
before:" << strlen(argv[2]));
produkuje:
	php_result_dir before:9574696,argv[2] before:72
Nie wiem o co chodzi bo jedyną modyfikację jaką robię na php_result_dir 
wcześniej jest:
         php_result_dir = "";
w konstruktorze (zrobiłem Find in Files w VSCode).
Technical Details
Message-ID: <rhlnuv$1sr38$1@portraits.wsisiz.edu.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin3!goblin.stu.neva.ru!wsisiz.edu.pl!.POSTED.user-5-173-152-148.play-internet.pl!not-for-mail
References: <rh69ni$21vgn$1@portraits.wsisiz.edu.pl> <20200814200505.3b77dc82@mateusz> <rhiu00$17eoh$1@portraits.wsisiz.edu.pl> <rhlbpr$1s42c$1@portraits.wsisiz.edu.pl> <20200820103955.7c6a9db1@mateusz> <rhli9c$1rre$1@gioia.aioe.org>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin2!goblin3!goblin.stu.neva.ru!wsisiz.edu.pl!.POSTED.user-5-173-152-148.play-internet.pl!not-for-mail
From: RM <robert_magdziarz@wp.pl>
Newsgroups: pl.comp.os.linux.programowanie
Subject: Re: ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: Nie ma takiego pliku ani katalogu
Date: Thu, 20 Aug 2020 13:48:46 +0200
Organization: http://www.wit.edu.pl
Message-ID: <rhlnuv$1sr38$1@portraits.wsisiz.edu.pl>
References: <rh69ni$21vgn$1@portraits.wsisiz.edu.pl> <20200814200505.3b77dc82@mateusz> <rhiu00$17eoh$1@portraits.wsisiz.edu.pl> <rhlbpr$1s42c$1@portraits.wsisiz.edu.pl> <20200820103955.7c6a9db1@mateusz> <rhli9c$1rre$1@gioia.aioe.org>
Mime-Version: 1.0
Injection-Date: Thu, 20 Aug 2020 11:48:47 -0000 (UTC)
Injection-Info: portraits.wsisiz.edu.pl; posting-host="user-5-173-152-148.play-internet.pl:5.173.152.148"; logging-data="1993832"; mail-complaints-to="abuse@wsisiz.edu.pl"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1
In-Reply-To: <rhli9c$1rre$1@gioia.aioe.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit