Nп/п : 53 из 100
 От   : vallor                              2:5075/128        15 сен 23 16:21:58
 К    : The Natural Philosopher                               15 сен 23 19:23:02
 Тема : Re: Weird code crash
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2@dont-email.me> b1a18122
@REPLY: 3@dont-email.me> df41c5a1
@REPLYADDR vallor <vallor@cultnix.org>
@REPLYTO 2:5075/128 vallor
@CHRS: CP866 2
@RFC: 1 0
@RFC-Message-ID: 2@dont-email.me>
@RFC-References: 1@dont-email.me>
<ygamsxoixhx.fsf@akutech.de>4@dont-email.me> <ygail8biyxm.fsf@akutech.de>1@dont-email.me>
<ygaedizitb9.fsf@akutech.de>2@dont-email.me> 5Arqz@news.chiark.greenend.org.uk>1@dont-email.me>
1@dont-email.me>3@dont-email.me>
@TZUTC: -0000
@TID: FIDOGATE-5.12-ge4e8b94
On Fri, 15 Sep 2023 16:46:43 +0100, The Natural Philosopher
<tnp@invalid.invalid> wrote in 3@dont-email.me>:

> On 15/09/2023 16:12, vallor wrote:
>> On Fri, 15 Sep 2023 14:56:23 +0100, The Natural Philosopher
>> <tnp@invalid.invalid> wrote in 1@dont-email.me>:
>> 
>>> On 15/09/2023 14:23, Theo wrote:
>>>> In comp.sys.raspberry-pi The Natural Philosopher
>>>> <tnp@invalid.invalid> wrote:
>>>>> On 15/09/2023 12:12, Ralf Fassel wrote:
>>>>>> |                             {
>>>>>> |                             *q++=0;
>>>>>> |                             thermometers[i].name=strdup(p); //
>>>>>> |                             make a copy of the name and attach it
>>>>>> |
>>>>>>                              to our thermometer structure
>>>>>>
>>>>>> Memory leak if thermometers[i].name already contains something.
>>>>>>
>>>>> further up the line...
>>>>>
>>>>>           bzero(filbuf,sizeof(filbuf));
>>>>>           /** first thing to do is clean any allocated memory used
>>>>>           to store
>>>>> values. **/
>>>>>           for(i=0;i >>>>>                   free(thermometers[i].name);
>>>>
>>>> You could get a SIGABRT if you were trying to free something that was
>>>> already freed.  Are you sure those are interlocked such that for each
>>>> i you call strdup() exactly once, and subsequently free() exactly
>>>> once? If there was some code path that was breaking out of the loop
>>>> or similar you might get such behaviour.
>>>>
>>> Hmm. I free the pointers even for relay zones that don`t have
>>> thermometers, whose pointers are 0. That isn`t an issue.
>>>
>>> But that might be a remotely possible  issue. I dont zero the pointers
>>> after freeing them as far as I can tell. The silly thing is that this
>>> program doesn`t use the name anyway.
>>>
>>> Its used elsewhere Well I don`t think its an issue, but I can zero the
>>> pointers anyway after free()ing
>>>
>>>> Theo
>> 
>> Hi, read the thread with interest.
>> 
>> If you`re getting SIGABRT, that`s almost always the software calling
>> abort(3).  If you aren`t, maybe there`s a library calling it?
>> 
>> $ man 7 signal [...]
>>         Signal      Standard   Action   Comment SIGABRT      P1990     
>>         Core    Abort signal from abort(3)
>> [but it also lists]
>>         SIGIOT         -        Core    IOT trap. A synonym for SIGABRT
>>   _ _ _ _ _ _ _
>> 
>> Meanwhile, if you want to avoid locking your file, you might want to
>> write a fresh file with a unique name, then rename() it,
>> which -- please correct me if I`m wrong -- should replace the desired
>> file atomically.
>> 
>> 
> I think the consensus is that it does.

> Presumably if the read process has the old file open, that will be valid
> until it closes it?

Yes -- and the old file remains allocated on disk until
its file descriptor is closed.

-- 
-v
--- FIDOGATE 5.12-ge4e8b94
 * Origin: A noiseless patient Spider (2:5075/128)
SEEN-BY: 5001/100 5005/49 5015/255 5019/40 5020/715
848 1042 4441 12000
SEEN-BY: 5030/49 1081 5058/104 5075/128
@PATH: 5075/128 5020/1042 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх