Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Bufferization of stderr messages

foxtran
New Contributor I
1,018 Views

Hello!

I have tried to compile some improper source code in multiple threads, and on stderr I see something like (outputs from several instances of ifx were mixed):

ur/cheo/mxep//echr_otlm.oefk/(gc1i_4/l6wo3ok)rg:ki d/eiwrror/roMkrRd Ci#Cr6./4CM0PR6PC:RC u.CsCosPniPfaRl/uiMscRstCiiCan./gpM iRapCteCtl.ripinibepu/etsleoisun reoc/res /ompuuerlrcttei./pfml(re2c 5cd5.e8fc)(l:3a 0re8ar0tr)io:or n e #ro6rf4o 0rn6 a:#m 6eC4.o0 n6 f: l [iCIcoNtnTifAnlDgiD cRat]ti
tn      icad=intaddr(mscr+ioffs)

 
It would be nice to add bufferization for error messages to avoid this strange output when multiple threads puts something on stderr. Probably, the same issue is for stdout

ifx version:
ifx (IFX) 2024.1.0 20240308

0 Kudos
8 Replies
jimdempseyatthecove
Honored Contributor III
963 Views

Enclose the write/print within a critical section. Name it something like

!$OMP CRITICAL (stderr_critical)

write(...

write(...

!$OMP END CRITICAL (stderr_critical)

 

Jim Dempsey

Steve_Lionel
Honored Contributor III
936 Views

I think the complaint is about error messages from the compiler itself, when in MP mode.

Devorah_H_Intel
Moderator
809 Views

Do you see the same problem with 2024.2 ifx? We would need a sample reproducer to investigate this further.   

0 Kudos
foxtran
New Contributor I
725 Views

@Devorah_H_Intel ,

I did not check it with 2024.2 ifx, so, probably, it could be fixed for it.

The reproducer for ifx 2024.1 is the following bash script:

#!/usr/bin/env bash

rm -fr files
mkdir files

for i in `seq 1 100`
do

cat <<EOF > files/program_${i}.f90
progmam main
implecet nano
for i = 1, dua
enddo
end
EOF

done

for rep in `seq 1 10`
do
  for i in `seq 1 100`
  do
    ifx files/program_${i}.f90 -c -o files/program_${i}.f90.o &
  done
done

wait

Most of time, it will produce normal output, however, at the end, you will get something like:

un pf4'ngSro8Nd you.A ongnfNInftrd9ODeiaa 0'E lxmI( Noef _D2wTfsie2E)hI:/lr0N:eF per.T nI(rsofIe E o/r9FreR:gp,0Irx  rr (Eop'%aof2RreI mgo)  c'[_ru:'#t  4an I5iw.9mde'0nh ._ r 8ge=f6Irw2 n 99Doh:o =e0.Ere n>x(fN nSe
p39T# y progmam main
e)0I5eno--------^
c:(F0xtft 2I8pa:ie)E2ex nr:R:c  (gr  tSe  oe'iyr:orfrNnnr n irAgto%e#loN ar  5erOox,[o0s 'n   f8/# eef.:2p5w ro  :r0horu=( o8efon  Sg2n:rd=:yr:  , > na e( I
%tmSx fDimplecet nano
 a_yp:oE---------^
[x8ne uN  3tc%nT.e.at dI rffxi[ F=r9i n II o0l(eg.DE=re2r  ER>,s)ro=N
 /:on T'for i = 1, dua
fp re=IN----^
ore, >FAuor o
INngrfffor i = 1, dua
EOdroo:----^
R' aru   Im n('wD_#d NhE55 :AeN30I NnT.8D%O If2E 'eF9:N[ xI0 T wpE(SI.heR3yF ec )nI=nt':tE  iI aR=en'ex >xg r '
p wreNimplecet nano
eohorA---------^
cnerr Nteno#rOi  5,'noe0  gfx8ffw :p2ioho e:luen(c enne tSsd  :iy/ eo nnpIxf%gtrDp:  aoxEe [og Nc( nreTt .earIi:  mrFn =o_oIg% f8rE  =:6,Ro[> .  n
(ff'e.implecet nano
 9oN  ---------^
:0uAo= (nNf %3dO:= ) ' >[:I (
f  Dw implecet nano
i.eEh:---------^
l rNe e%=rTns  oI /[=rFep > Ixr.
#fEpo for i = 1, dua
5iReg=----^
0l cr 8e'ta=2sIim>:/'n_
 p g4implecet nano
Srw 8---------^
yoho.ngenftrne9aa  0xmeo( _xf3e2p:)fr0e ( : % [ . = =>
implecet nano
---------^
:ir.c lofteer9irs,0nr/ (g3opf )rrfoo: oiun #glnee5red r0as or8m/Ifo2_pD:r:6rE   9S.oN(#yfgT 5n90rI:0t(aF 8a3mI%2x)_E : :8R[ e r3  Ser.'.yrofI nrr,9'=to r0  af (w=xo#3h> u5)e
en0:nfor i = 1, dua
rd8  ----^
r 2eeoI:rxr rDp,SoEe yrNcfn Ttot#Iiua5Fnnx0compilation aborted for files/program_14.f90 (code 1)
Igcompilation aborted for files/program_41.f90 (code 1)
d 8E  e2RoIr: nDr 'eEoI' SNyr oTn,wfItFa h:Ixfe E on(Reu   rne:'rIdx o' p%r Ie ,wDc[ hfEt eoNi.nuTn  nIg=edF  x Ion=pIEe>eDR o
cE ffor i = 1, dua
tN': ----^
iTI(nI' gF : Iow Enh%eRe n  [ 'oIf e': .x w p=e(h c e=t>i
:nnfor i = 1, dua
  %g----^
e  x[op ne.ec  t=oi fn=:g>
(for i = 1, dua
o ----^
n:e  %o f[:  .(  =:  =%>


I did not notice the same problem for ifort

0 Kudos
jimdempseyatthecove
Honored Contributor III
685 Views

Please correct me if I am wrong:

I am unaware that ifx Fortran accepts non-English keywords.

progmam instead of program

impelecet instead of implicit

nano instead of none

the undeclared variable "dua" in a supposedly implicit none program

 

Jim Dempsey

 

Also, it appears you pasted Unicode text as text into this forum.

 

 

0 Kudos
GVautier
New Contributor II
674 Views

I think it's a voluntarily buggy code in order to generate error messages.

0 Kudos
foxtran
New Contributor I
606 Views

@Devorah_H_Intel, The same issue is for the latest version of ifx.

@jimdempseyatthecove, you are welcome to provide a valid source code that generates error messages during compilation stage

0 Kudos
Igor_V_Intel
Employee
562 Views

It is escalated to the development team. I agree that the behaviour should be similar to ifort in that case.


0 Kudos
Reply