Menu

#3252 Sporadic uCsim build failure

closed-out-of-date
None
Build
5
2023-01-28
2021-06-12
No

In sdcc from current trunk, build fails for me sporadically (about once for every 10 times i try to compile) when using make -j 18.

As far as I can see the build fails in the m6800 part of uCsim. I suspect some race condition in the build system.

I have attached the output from make -j18 &> buildfaillog

Philipp

1 Attachments

Related

Wiki: NGI0-Entrust-SDCC
Commit: [57c3bd]
Commit: [9d2f24]

Discussion

  • Daniel Drotos

    Daniel Drotos - 2021-06-12

    Dear Philipp,
    [r12444] solved this for me, but I still investigate.
    Daniel

     
    • Philipp Klaus Krause

      I noticed it in the callingconvention branch (since I want to build that one about 500 times per night for some experiments).
      The current [r12448] callingconvention branch has all the changes from [r12447] noasm2 branch, which in turn has all the changes from trunk [r12446]. So trunk would still have the same problem (though I'm not building trunk often enough to have encountered the problem since).

       
  • Daniel Drotos

    Daniel Drotos - 2021-06-13

    Philipp, which is the way you call the configure script?

     
    • Philipp Klaus Krause

      ./configure --disable-pic14-port --disable-pic16-port --disable-mcs51-port --disable-ds390-port --disable-ds400-port --disable-hc08-port --disable-s08-port --disable-gbz80-port --disable-tlcs90-port --disable-r2ka-port --disable-z80-port --disable-z80n-port --disable-z180-port --disable-r2k-port --disable-r3ka-port --disable-ez80_z80-port --disable-pdk13-port --disable-pdk14-port --disable-pdk15-port
      
       
  • Erik Petrich

    Erik Petrich - 2021-06-13

    I think [r12444] breaks builds that are outside of the source tree, which is causing all the snapshot builds to fail. But this is also how I normally build locally too. In my case "sdcc-main2" is my source directory and "sdcc-build2" is my build directory:

    make -C m68hc12.src m68hc12.src
    make[3]: Entering directory '/home/epetrich/sdcc-build2/sim/ucsim/m68hc12.src'
    g++ -MM -I../../../../sdcc-main2/sim/ucsim/m68hc12.src -I../../../../sdcc-main2/sim/ucsim -I.. -I../../../../sdcc-main2/sim/ucsim/cmd.src -I../../../../sdcc-main2/sim/ucsim/sim.src -I../../../../sdcc-main2/sim/ucsim/gui.src -I../../../../sdcc-main2/sim/ucsim/motorola.src -I../../../../sdcc-main2/sim/ucsim/m6800.src ../../../../sdcc-main2/sim/ucsim/m68hc12.src/glob.cc ../../../../sdcc-main2/sim/ucsim/m68hc12.src/m68hc11.cc ../../../../sdcc-main2/sim/ucsim/m68hc12.src/m68hc12.cc ../../../../sdcc-main2/sim/ucsim/m68hc12.src/simm68hc12.cc ../../../../sdcc-main2/sim/ucsim/m68hc12.src/sm68hc12.cc >Makefile.dep
    g++ -g -O2 -g -Wall -fPIC -DPIC -I../../../../sdcc-main2/sim/ucsim/m68hc12.src -I../../../../sdcc-main2/sim/ucsim -I.. -I../../../../sdcc-main2/sim/ucsim/cmd.src -I../../../../sdcc-main2/sim/ucsim/sim.src -I../../../../sdcc-main2/sim/ucsim/gui.src -I../../../../sdcc-main2/sim/ucsim/motorola.src -I../../../../sdcc-main2/sim/ucsim/m6800.src  -c ../../../../sdcc-main2/sim/ucsim/m68hc12.src/glob.cc -o glob.o
    g++ -g -O2 -g -Wall -fPIC -DPIC -I../../../../sdcc-main2/sim/ucsim/m68hc12.src -I../../../../sdcc-main2/sim/ucsim -I.. -I../../../../sdcc-main2/sim/ucsim/cmd.src -I../../../../sdcc-main2/sim/ucsim/sim.src -I../../../../sdcc-main2/sim/ucsim/gui.src -I../../../../sdcc-main2/sim/ucsim/motorola.src -I../../../../sdcc-main2/sim/ucsim/m6800.src  -c ../../../../sdcc-main2/sim/ucsim/m68hc12.src/simm68hc12.cc -o simm68hc12.o
    g++ -g -O2 -g -Wall -fPIC -DPIC -I../../../../sdcc-main2/sim/ucsim/m68hc12.src -I../../../../sdcc-main2/sim/ucsim -I.. -I../../../../sdcc-main2/sim/ucsim/cmd.src -I../../../../sdcc-main2/sim/ucsim/sim.src -I../../../../sdcc-main2/sim/ucsim/gui.src -I../../../../sdcc-main2/sim/ucsim/motorola.src -I../../../../sdcc-main2/sim/ucsim/m6800.src  -c ../../../../sdcc-main2/sim/ucsim/m68hc12.src/m68hc11.cc -o m68hc11.o
    g++ -g -O2 -g -Wall -fPIC -DPIC -I../../../../sdcc-main2/sim/ucsim/m68hc12.src -I../../../../sdcc-main2/sim/ucsim -I.. -I../../../../sdcc-main2/sim/ucsim/cmd.src -I../../../../sdcc-main2/sim/ucsim/sim.src -I../../../../sdcc-main2/sim/ucsim/gui.src -I../../../../sdcc-main2/sim/ucsim/motorola.src -I../../../../sdcc-main2/sim/ucsim/m6800.src  -c ../../../../sdcc-main2/sim/ucsim/m68hc12.src/m68hc12.cc -o m68hc12.o
    g++ -g -O2 -g -Wall -fPIC -DPIC -I../../../../sdcc-main2/sim/ucsim/m68hc12.src -I../../../../sdcc-main2/sim/ucsim -I.. -I../../../../sdcc-main2/sim/ucsim/cmd.src -I../../../../sdcc-main2/sim/ucsim/sim.src -I../../../../sdcc-main2/sim/ucsim/gui.src -I../../../../sdcc-main2/sim/ucsim/motorola.src -I../../../../sdcc-main2/sim/ucsim/m6800.src  -c ../../../../sdcc-main2/sim/ucsim/m68hc12.src/sm68hc12.cc -o sm68hc12.o
    make -C ../../../../sdcc-main2/sim/ucsim/m6800.src all
    make[4]: Entering directory '/home/epetrich/sdcc-main2/sim/ucsim/m6800.src'
    make[4]: *** No rule to make target 'all'.  Stop.
    make[4]: Leaving directory '/home/epetrich/sdcc-main2/sim/ucsim/m6800.src'
    make[3]: *** [Makefile:158: ../libm6800.a] Error 2
    make[3]: Leaving directory '/home/epetrich/sdcc-build2/sim/ucsim/m68hc12.src'
    make[2]: *** [Makefile:53: m68hc12.src] Error 2
    make[2]: Leaving directory '/home/epetrich/sdcc-build2/sim/ucsim'
    make[1]: *** [Makefile:24: all] Error 2
    make[1]: Leaving directory '/home/epetrich/sdcc-build2/sim/ucsim'
    make: *** [Makefile:153: sdcc-misc] Error 2
    

    Here the "make -C ../../../../sdcc-main2/sim/ucsim/m6800.src all" fails because that directory has no Makefile, only Makefile.in

    It builds okay if I edit packages.mk to disable m68hc12

     
  • Daniel Drotos

    Daniel Drotos - 2021-06-13

    Fix is in [r12456].

     
    • Philipp Klaus Krause

      I still see sporadic build failures, still in the m6800 part, even though the error message looks a little different now. Output from

      make -j 18 &> log
      

      I attached.

       
      • Philipp Klaus Krause

        I suspect that these lines fromt eh above file

        g++ -g -O2 -g -Wall  simm6800.o m6800.o glob.o irq.o inst.o ialu.o ibranch.o imove.o sm6800.o -L.. -lmotorola -lsim -lucsimutil -lguiucsim -lcmd -lsim -lrt -lnsl  -o sm6800
        ranlib ../libm6800.a
        yes
        /usr/bin/ld: simm6800.o: in function `cl_simm6800::mk_controller()':
        /home/philipp/callingconvention/experiments-stm8/sdcc_args___ret_xl_x_xy_callee/sim/ucsim/m6800.src/simm6800.cc:40: undefined reference to `cl_m6800::cl_m6800(cl_sim*)'
        collect2: error: ld returned 1 exit status
        make[4]: *** [Makefile:124: sm6800] Fehler 1
        

        Are close to the underlying issue: Apparentlythe time sm6800 is to be linked whatever is supposed to contain cl_m6800::cl_m6800(cl_sim*) is not there yet.

        P.S.:

        Also, I see these two lines

        ranlib ../libm6800.a
        g++ -g -O2 -g -Wall  simm6800.o m6800.o glob.o irq.o inst.o ialu.o ibranch.o imove.o sm6800.o -L.. -lmotorola -lsim -lucsimutil -lguiucsim -lcmd -lsim -lrt -lnsl  -o sm6800
        

        twice in the log output, which seems odd to me. Does the build infrastructure build the same files twice, possibly even attempting to do so at the same time?

         

        Last edit: Philipp Klaus Krause 2021-06-13
  • Philipp Klaus Krause

    • status: open --> closed-out-of-date
    • assigned_to: Philipp Klaus Krause
     
  • Philipp Klaus Krause

    I can no longer reproduce this issue in current trunk.

     

Log in to post a comment.