Re: [hatari-devel] Fwrite warnings |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- To: hatari-devel@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [hatari-devel] Fwrite warnings
- From: Uwe Seimet <Uwe.Seimet@xxxxxxxxx>
- Date: Thu, 27 Oct 2022 13:47:42 +0200
- Authentication-results: strato.com; dkim=none
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1666871283; s=strato-dkim-0002; d=seimet.de; h=In-Reply-To:References:Message-ID:Subject:To:From:Date:Cc:Date:From: Subject:Sender; bh=knSi2qOb5io0F187z1xBfKTUyVZXJrA7VGrKLC6cKNI=; b=m+krRxZ+yhJ+4b1laBkysuj5mcbr02o8ltsBiA32Dx5g/VUL5KkClVgOTc+04x/HNb L3wHAVpvdKQ48it4at72j6A657eAGiSlcZ+altyp8CQVcwh9m6HP+xhKirEC+UoTIcZi 1otqwKvN/Sn7KHlUBRVNqhJkgzGI7D2rnfPHtgVizcPefHu039As6Qpb7OkAFytkERTp rsfOaT0XZu5a1koN4X58sTgH22M5q+dO75XJay80RGfQ+5ZXQo3PK6N6eUqL90inI9oO /ypmtlMjDRQU2tivqo+nB7XWJ97KLyL3i10BQneQmXnGFSSD7o0pgTB+lVB4dQHtIRuC ag0g==
Hi,
Thank you for fixing this. There is a different kind of warning (not new),
which I doubt should be on warning level:
WARN : No GEMDOS dir '/home/us/TT/F/C/LOCAL/INCLUDE/OTHER'
WARN : No GEMDOS dir '/home/us/TT/F/C/LOCAL/INCLUDE/other'
IMO it is normal that Pure C (or other compilers) try to access
non-existing folders while searching for files on the include path. From
that perspective debug or trace level would probably be more adequate.
Best regards
Uwe
> Hi,
>
> On 27.10.2022 10.08, Uwe Seimet wrote:
> > Yes, that fixed has helped. All warnings are gone.
>
> Thanks, I pushed slightly updated version of it.
>
> Before next release this message can be downgraded to DEBUG log level,
> but for now I want to keep it at WARN log level to catch potential
> further issues with it.
>
>
> > In general it might be a good idea to suppress consecutive duplicate
> > warnings but just to display them once with a count, e.g.
> >
> > WARN : GEMDOS Fwrite() to 'ROOT.O' file, opened as read-only (3 times)
>
> I have patches out on the mailing list to do that for trace output, but
> I could extend it to cover also log messages.
>
> Because suppression logic adds some overhead and can delay output of the
> identical messages a lot, it's behind a new "--repeat-limit" Hatari
> debug option.
>
>
> - Eero
>
> > instead of
> >
> > WARN : GEMDOS Fwrite() to 'ROOT.O' file, opened as read-only
> > WARN : GEMDOS Fwrite() to 'ROOT.O' file, opened as read-only
> > WARN : GEMDOS Fwrite() to 'ROOT.O' file, opened as read-only
> >
> > Best regards
> >
> > Uwe
> >
> >> Hi Uwe,
> >>
> >> On 27.10.2022 0.39, Eero Tamminen wrote:
> >>> On 26.10.2022 15.16, Uwe Seimet wrote:
> >>>>> with the latest sources I get tons of warnings when, for instance, I
> >>>>> compile
> >>>>> with Pure C. I have never seen these warnings before.
> >>>>>
> >>>>> WARN : GEMDOS Fwrite() to 'ROOT.O' file, opened as read-only
> >>>
> >>> This is from following commit:
> >>> https://git.tuxfamily.org/hatari/hatari.git/commit/?id=799020b84d0224a4bb38f2b892a8ecdd1c11bcc1
> >>>
> >>>
> >>>>> Is this a bug or can these warnings be switched off? There are so
> >>>>> many of
> >>>>> them that it's hard to see the actually relevant messages.
> >>> >
> >>> > I just noticed that I also get these warnings
> >>> > for files definitely opened for writing, i.e.
> >>> > opened with fopen(FILENAME, "w") with Pure C.
> >>>
> >>> Can you provide GEMDOS trace around that warning?
> >>
> >> Only case where I can see this happening:
> >> * Fwrite() done for a FD from Fcreate(), not Fopen(), and
> >> * That FD number being reused from an earlier, already Fclose()d,
> >> read-only Fopen() call
> >>
> >>
> >> Attached patch should fix that. Does it help?
> >>
> >>
> >> - Eero
> >
> >> diff --git a/src/gemdos.c b/src/gemdos.c
> >> index 1c3e4010..5067ac54 100644
> >> --- a/src/gemdos.c
> >> +++ b/src/gemdos.c
> >> @@ -896,6 +896,8 @@ static void restore_file_handle_info(int i, FILE_HANDLE *handle)
> >> fclose(fp);
> >> return;
> >> }
> >> + /* used only for warnings, ignore those after restore */
> >> + handle->bReadOnly = false;
> >> handle->FileHandle = fp;
> >> }
> >>
> >> @@ -2021,8 +2023,11 @@ static bool GemDOS_Create(uint32_t Params)
> >> * - GEMDOS_FILE_ATTRIB_WRITECLOSE (FA_ARCHIVE)
> >> * (set automatically by GemDOS >= 0.15)
> >> */
> >> + FileHandles[Index].bReadOnly = false;
> >> if (Mode & GEMDOS_FILE_ATTRIB_READONLY)
> >> {
> >> + /* enable write warnings */
> >> + FileHandles[Index].bReadOnly = true;
> >> /* after closing, file should be read-only */
> >> if (chmod(szActualFileName, S_IRUSR|S_IRGRP|S_IROTH))
> >> {
> >> @@ -3883,8 +3888,9 @@ void GemDOS_Info(FILE *fp, uint32_t bShowOpcodes)
> >> {
> >> if (!FileHandles[i].bUsed)
> >> continue;
> >> - fprintf(fp, "- %d (0x%x): %s\n", i + BASE_FILEHANDLE,
> >> - FileHandles[i].Basepage, FileHandles[i].szActualName);
> >> + fprintf(fp, "- %d (0x%x): %s (%s)\n", i + BASE_FILEHANDLE,
> >> + FileHandles[i].Basepage, FileHandles[i].szActualName,
> >> + FileHandles[i].bReadOnly ? "ro" : "rw");
> >> used++;
> >> }
> >> if (!used)
> >
> >
> >
>
>