whizard is hosted by Hepforge, IPPP Durham

Opened 10 years ago

Closed 10 years ago

#686 closed defect (fixed)

New NLO check in hiccups with gfortran 4.7.1

Reported by: Juergen Reuter Owned by: cweiss
Priority: P0 Milestone: v2.2.3
Component: nlo Version: 2.2.2
Severity: blocker Keywords:
Cc:

Description

This is the error message:

/bin/sh ../../libtool --tag=FC   --mode=compile gfortran -I../basics -I../utilities -I../testing -I../system -I../combinatorics -I../parsing -I../physics -I../qft -I../types -I../particles -I../beams -I../../vamp/src -I../shower -I../pdf_builtin -I../muli -I../../circe1/src -I../../circe2/src -I../lhapdf -I../fastjet   -g -O2 -c -o processes.lo  processes.f90
libtool: compile:  gfortran -I../basics -I../utilities -I../testing -I../system -I../combinatorics -I../parsing -I../physics -I../qft -I../types -I../particles -I../beams -I../../vamp/src -I../shower -I../pdf_builtin -I../muli -I../../circe1/src -I../../circe2/src -I../lhapdf -I../fastjet -g -O2 -c processes.f90  -fPIC -o .libs/processes.o
processes.f90:1572.4:

    proc%component(i_component)%core_sub_born = core_born_in
    1
Error: Variable must not be polymorphic in intrinsic assignment at (1) - check that there is a matching specific subroutine for '=' operator
make[2]: *** [processes.lo] Error 1

Change History (8)

comment:1 Changed 10 years ago by kilian

Polymorphic assignment is a F2008 feature. With the -f2003 option in effect, the NAG compiler should also have complained .. (but the offending line appears to be left-over anyway .. please remove).

comment:2 Changed 10 years ago by kilian

... no, NAG just marks it as an extension.

Extension: processes.f90, line 1572: Left-hand side of intrinsic assignment is allocatable polymorphic variable PROC%COMPONENT(I_COMPONENT)%CORE_SUB_BORN

Interesting, didn't expect them to implement those F2008 features early.

comment:3 Changed 10 years ago by Juergen Reuter

Now there is a segfault in smtest_16:

Warning: No cuts have been defined.

Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

Backtrace for this error:
#0  0x7F8187F62E97
#1  0x7F8187F63464
#2  0x36382326AF
#3  0x7F8202C02950
#4  0x7F8202A6F59B
#5  0x7F8202DCC072
#6  0x7F8202DDAFE9
#7  0x7F8202E65B8A
#8  0x7F8202E6BF7D
#9  0x7F8202EC47B7
#10  0x7F8202EC44B9
#11  0x7F82044A3866
#12  0x7F82044A460E
#13  0x363821ED5C
./run_whizard.sh: line 26:  1689 Segmentation fault      (core dumped) ../src/whizard --logfile $basename.log --no-banner --library ${libname}_lib --rebuild $* $script.sin
65,81d64

comment:4 Changed 10 years ago by Juergen Reuter

This is the backtrace:

Program received signal SIGSEGV, Segmentation fault.
prc_omega::__copy_prc_omega_Prc_omega_t (src=..., dst=<error reading variable: Cannot access memory at address 0x0>) at prc_omega.f90:714
714	    class(prc_omega_t), intent(in) :: object
(gdb) bt
#0  prc_omega::__copy_prc_omega_Prc_omega_t (src=..., dst=<error reading variable: Cannot access memory at address 0x0>) at prc_omega.f90:714
#1  0x00007ffff635c4bc in processes::process_init_sub_born (proc=..., i_component=2, core_born_in=...) at processes.f90:1571
#2  0x00007ffff66b8f93 in integrations::integration_integrate (intg=..., local=..., eff_reset=<error reading variable: Cannot access memory at address 0x0>) at integrations.f90:469
#3  0x00007ffff66c7f0a in integrations::integrate_process (process_id=..., global=..., local_input=..., init_only=<error reading variable: Cannot access memory at address 0x0>, 
    eff_reset=<error reading variable: Cannot access memory at address 0x0>) at integrations.f90:623
#4  0x00007ffff6752aab in commands::cmd_integrate_execute (cmd=..., global=...) at commands.f90:2735
#5  0x00007ffff6758e9e in commands::command_list_execute (cmd_list=..., global=...) at commands.f90:5373
#6  0x00007ffff67b16d8 in whizard::whizard_process_stream (whizard=..., stream=..., lexer=..., quit=.FALSE., quit_code=0) at whizard.f90:427
#7  0x00007ffff67b13da in whizard::whizard_process_file (whizard=..., file=..., quit=.FALSE., quit_code=0) at whizard.f90:403
#8  0x00007ffff7d91867 in MAIN__ () at main.f90:394
#9  0x00007ffff7d9260f in main (argc=<optimized out>, argv=<optimized out>) at main.f90:34
#10 0x0000003ce2c1ed5d in __libc_start_main () from /lib64/libc.so.6
#11 0x0000000000400719 in _start ()

comment:5 Changed 10 years ago by kilian

r6190: skip this test, if the compiler is gfortran < 4.7.4.

The NLO code is in alpha stage, so this test is not mandatory. Skipping it should avoid the test suite failure with this old compiler. The test script can be run manually, anywyay.

May close this as wontfix, or try to circumvent the compiler bug and reactivate the test.

comment:6 Changed 10 years ago by Juergen Reuter

Sorry but this is a horrible "not_fix". That parts of the program do not work with certain compiler versions is very ugly. Possible solutions are: (1) let the complete NLO depend on a configure option (2) workaround for that problem in gfortran 4.7.1/2/3 [preferred] (3) veto against all gfortran versions older than 4.7.4 (possible but makes direct use e.g.

at DESY only possible with self-compiled compilers)

In any case read my comments at #584

comment:7 Changed 10 years ago by Juergen Reuter

Any reactions?

comment:8 Changed 10 years ago by Juergen Reuter

Resolution: fixed
Status: newclosed

Fixed in r6193, with option (2) [preferred option] from list of comment6.

Note: See TracTickets for help on using tickets.