Sarcasm / irony-mode

A C/C++ minor mode for Emacs powered by libclang
GNU General Public License v3.0
906 stars 99 forks source link

Test irony-iotask-schedule/task-update/invalid-msg does sometimes passes and sometimes fails #449

Closed sten0 closed 6 years ago

sten0 commented 6 years ago

Hello again!

Today two bugs were reported for irony-iotask-schedule/task-update/invalid-msg failing on arm64 and mips64el. Autotests weren't being run on past versions of the package, so these might not be new issues. If this is a new issue, then I suspect that the migration to gcc-7 might be implicated (compiling with gcc7 and linking to libclang-5.0). Is this a supported configuration or should irony-server be compiled with clang-5? Full build logs are linked to from the Debian bugs, but here is what I believe is the relevant section. I'm sorry the backtrace's lines are hard-truncated and don't understand why emacs25's ert does this. Please let me know what I can do to help solve this! :-)

Test irony-iotask-schedule/task-update/invalid-msg backtrace:
  (if (unwind-protect (setq value-97 (apply fn-95 args-96)) (setq form
  (let (form-description-99) (if (unwind-protect (setq value-97 (apply
  (let ((value-97 (quote ert-form-evaluation-aborted-98))) (let (form-
  (let ((fn-95 (function string=)) (args-96 (list (buffer-string) "exi
  (progn (let ((fn-95 (function string=)) (args-96 (list (buffer-strin
  (if (>= (buffer-size) (length "exit\n")) (progn (let ((fn-95 (functi
  (save-current-buffer (set-buffer (process-buffer process)) (goto-cha
  (progn (save-current-buffer (set-buffer (process-buffer process)) (g
  (if (buffer-live-p (process-buffer process)) (progn (save-current-bu
  irony-iotask-echo-process-exit-filter(#<process emacs-irony-test> "e
  sleep-for(0.05)
  sit-for(0.05)
  (while (process-live-p process) (sit-for 0.05))
  (progn (while (process-live-p process) (sit-for 0.05)))
  (unwind-protect (progn (while (process-live-p process) (sit-for 0.05
  (let* ((-with-timeout-timer- (run-with-timer 1 nil (function (lambda
  (catch (quote timeout) (let* ((-with-timeout-timer- (run-with-timer 
  (let ((-with-timeout-value- (catch (quote timeout) (let* ((-with-tim
  (unwind-protect (progn (irony-iotask-setup-process process) (let ((f
  (let ((process-connection-type nil) (process-adaptive-read-buffering
  (let ((task (irony-iotask-package-task irony-iotask/task-invalid-msg
  (lambda nil (let ((task (irony-iotask-package-task irony-iotask/task
  ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
  ert-run-test([cl-struct-ert-test irony-iotask-schedule/task-update/i
  ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test c
  ert-run-tests(t #[385 "\306\307\"\203G\211\211G\310U\203\211@\20
  ert-run-tests-batch(nil)
  ert-run-tests-batch-and-exit()
  eval((ert-run-tests-batch-and-exit))
  command-line-1(("-l" "package" "--eval" "(add-to-list 'package-direc
  command-line()
  normal-top-level()
Test irony-iotask-schedule/task-update/invalid-msg condition:
    (ert-test-failed
     ((should
       (string=
    (buffer-string)
    "exit
"))
      :form
      (string= "
exit" "exit
")
      :value nil))
   FAILED  22/41  irony-iotask-schedule/task-update/invalid-msg
emacs-irony-test process stopped!
E: Build killed with signal TERM after 150 minutes of inactivity

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=880669 https://buildd.debian.org/status/fetch.php?pkg=irony-mode&arch=arm64&ver=1.2.0-1&stamp=1509629187&raw=0 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=880670 https://buildd.debian.org/status/fetch.php?pkg=irony-mode&arch=mips64el&ver=1.2.0-1&stamp=1509635728&raw=0

sten0 commented 6 years ago

Here is the backtrace for arm64 self-test failure:

#0  0x0000ffffa528a6d0 in pselect () from /lib/aarch64-linux-gnu/libc.so.6
#1  0x00000000005f8c40 in wait_reading_process_output (time_limit=0, 
    nsecs=50000000, read_kbd=0, do_display=false, wait_for_cell=0, 
    wait_proc=0x11abd60, just_wait_proc=0)
    at ./debian/build-src/src/process.c:4833
#2  0x00000000005f7530 in Faccept_process_output (process=18529632, 
    seconds=17210495, millisec=0, just_this_one=0)
    at ./debian/build-src/src/process.c:4238
#3  0x00000000005a20b0 in eval_sub (form=12714339)
    at ./debian/build-src/src/eval.c:2182
#4  0x000000000059e204 in Fprogn (body=12714387)
    at ./debian/build-src/src/eval.c:431
#5  0x000000000059f5b4 in Fwhile (args=12710227)
    at ./debian/build-src/src/eval.c:971
#6  0x00000000005a1cac in eval_sub (form=12710211)
    at ./debian/build-src/src/eval.c:2125
#7  0x000000000059e204 in Fprogn (body=12710339)
    at ./debian/build-src/src/eval.c:431
#8  0x000000000059f4b0 in Flet (args=12710387)
    at ./debian/build-src/src/eval.c:952
#9  0x00000000005a1cac in eval_sub (form=12710403)
    at ./debian/build-src/src/eval.c:2125
#10 0x000000000059ff1c in internal_lisp_condition_case (var=0, 
    bodyform=12710403, handlers=12710691) at ./debian/build-src/src/eval.c:1286
#11 0x000000000059fb30 in Fcondition_case (args=12710723)
    at ./debian/build-src/src/eval.c:1212
#12 0x00000000005a1cac in eval_sub (form=12710739)
    at ./debian/build-src/src/eval.c:2125
#13 0x000000000059e0c4 in Fif (args=12710771)
    at ./debian/build-src/src/eval.c:385
#14 0x00000000005a1cac in eval_sub (form=12710755)
    at ./debian/build-src/src/eval.c:2125
#15 0x000000000059e204 in Fprogn (body=12708915)
    at ./debian/build-src/src/eval.c:431
#16 0x00000000005a1cac in eval_sub (form=12711779)
    at ./debian/build-src/src/eval.c:2125
#17 0x000000000059e204 in Fprogn (body=12709795)
    at ./debian/build-src/src/eval.c:431
#18 0x000000000059f4b0 in Flet (args=12706851)
    at ./debian/build-src/src/eval.c:952
#19 0x00000000005a1cac in eval_sub (form=12706867)
    at ./debian/build-src/src/eval.c:2125
#20 0x000000000059e204 in Fprogn (body=12706931)
    at ./debian/build-src/src/eval.c:431
#21 0x00000000005a42a4 in funcall_lambda (fun=12706883, nargs=2, 
    arg_vector=0xffffda40d540) at ./debian/build-src/src/eval.c:2922
#22 0x00000000005a3d38 in apply_lambda (fun=12706883, args=13387459, count=49)
    at ./debian/build-src/src/eval.c:2800
#23 0x00000000005a234c in eval_sub (form=13387443)
    at ./debian/build-src/src/eval.c:2247
#24 0x00000000005a1e00 in eval_sub (form=13385587)
    at ./debian/build-src/src/eval.c:2137
#25 0x000000000059f310 in Flet (args=13380755)
    at ./debian/build-src/src/eval.c:924
#26 0x00000000005a1cac in eval_sub (form=13380771)
    at ./debian/build-src/src/eval.c:2125
#27 0x000000000059e204 in Fprogn (body=13380819)
    at ./debian/build-src/src/eval.c:431
#28 0x00000000005a1cac in eval_sub (form=13380787)
    at ./debian/build-src/src/eval.c:2125
#29 0x000000000059fabc in Funwind_protect (args=13380851)
    at ./debian/build-src/src/eval.c:1176
#30 0x00000000005a1cac in eval_sub (form=13380835)
    at ./debian/build-src/src/eval.c:2125
#31 0x000000000059e204 in Fprogn (body=13378803)
    at ./debian/build-src/src/eval.c:431
#32 0x000000000059f4b0 in Flet (args=13378819)
    at ./debian/build-src/src/eval.c:952
#33 0x00000000005a1cac in eval_sub (form=13378835)
    at ./debian/build-src/src/eval.c:2125
#34 0x000000000059e204 in Fprogn (body=13378851)
    at ./debian/build-src/src/eval.c:431
#35 0x000000000059f4b0 in Flet (args=13378867)
    at ./debian/build-src/src/eval.c:952
#36 0x00000000005a1cac in eval_sub (form=13378883)
    at ./debian/build-src/src/eval.c:2125
#37 0x000000000059e204 in Fprogn (body=13378931)
    at ./debian/build-src/src/eval.c:431
#38 0x00000000005a42a4 in funcall_lambda (fun=13378899, nargs=0, 
    arg_vector=0xffffda40e418) at ./debian/build-src/src/eval.c:2922
#39 0x00000000005a3a70 in Ffuncall (nargs=1, args=0xffffda40e410)
    at ./debian/build-src/src/eval.c:2760
#40 0x00000000005ebaa0 in exec_byte_code (bytestr=19734660, vector=17833317, 
    maxdepth=38, args_template=1030, nargs=1, args=0xffffda40e978)
    at ./debian/build-src/src/bytecode.c:880
#41 0x00000000005a3fc8 in funcall_lambda (fun=17768253, nargs=1, 
    arg_vector=0xffffda40e970) at ./debian/build-src/src/eval.c:2863
#42 0x00000000005a39a8 in Ffuncall (nargs=2, args=0xffffda40e968)
---Type <return> to continue, or q <return> to quit---
    at ./debian/build-src/src/eval.c:2748
#43 0x00000000005ebaa0 in exec_byte_code (bytestr=19718724, vector=17636405, 
    maxdepth=54, args_template=1030, nargs=1, args=0xffffda40eef0)
    at ./debian/build-src/src/bytecode.c:880
#44 0x00000000005a3fc8 in funcall_lambda (fun=17768397, nargs=1, 
    arg_vector=0xffffda40eee8) at ./debian/build-src/src/eval.c:2863
#45 0x00000000005a39a8 in Ffuncall (nargs=2, args=0xffffda40eee0)
    at ./debian/build-src/src/eval.c:2748
#46 0x00000000005ebaa0 in exec_byte_code (bytestr=19852516, vector=18132021, 
    maxdepth=58, args_template=3086, nargs=3, args=0xffffda40f490)
    at ./debian/build-src/src/bytecode.c:880
#47 0x00000000005a3fc8 in funcall_lambda (fun=18128845, nargs=3, 
    arg_vector=0xffffda40f478) at ./debian/build-src/src/eval.c:2863
#48 0x00000000005a39a8 in Ffuncall (nargs=4, args=0xffffda40f470)
    at ./debian/build-src/src/eval.c:2748
#49 0x00000000005ebaa0 in exec_byte_code (bytestr=19850692, vector=18132293, 
    maxdepth=54, args_template=2058, nargs=2, args=0xffffda40f9c8)
    at ./debian/build-src/src/bytecode.c:880
#50 0x00000000005a3fc8 in funcall_lambda (fun=18132477, nargs=2, 
    arg_vector=0xffffda40f9b8) at ./debian/build-src/src/eval.c:2863
#51 0x00000000005a39a8 in Ffuncall (nargs=3, args=0xffffda40f9b0)
    at ./debian/build-src/src/eval.c:2748
#52 0x00000000005ebaa0 in exec_byte_code (bytestr=11460900, vector=18132957, 
    maxdepth=18, args_template=1026, nargs=1, args=0xffffda40fef0)
    at ./debian/build-src/src/bytecode.c:880
#53 0x00000000005a3fc8 in funcall_lambda (fun=18141005, nargs=1, 
    arg_vector=0xffffda40fee8) at ./debian/build-src/src/eval.c:2863
#54 0x00000000005a39a8 in Ffuncall (nargs=2, args=0xffffda40fee0)
    at ./debian/build-src/src/eval.c:2748
#55 0x00000000005ebaa0 in exec_byte_code (bytestr=11496484, vector=18141053, 
    maxdepth=22, args_template=1026, nargs=0, args=0xffffda410340)
    at ./debian/build-src/src/bytecode.c:880
#56 0x00000000005a3fc8 in funcall_lambda (fun=18141109, nargs=0, 
    arg_vector=0xffffda410340) at ./debian/build-src/src/eval.c:2863
#57 0x00000000005a3d38 in apply_lambda (fun=18141109, args=0, count=12)
    at ./debian/build-src/src/eval.c:2800
#58 0x00000000005a21ac in eval_sub (form=13594515)
    at ./debian/build-src/src/eval.c:2217
#59 0x00000000005a16cc in Feval (form=13594515, lexical=0)
    at ./debian/build-src/src/eval.c:1994
#60 0x00000000005a373c in Ffuncall (nargs=2, args=0xffffda4106c0)
    at ./debian/build-src/src/eval.c:2702
#61 0x00000000005ebaa0 in exec_byte_code (bytestr=8004148, vector=8004181, 
    maxdepth=90, args_template=1030, nargs=1, args=0xffffda410c28)
    at ./debian/build-src/src/bytecode.c:880
#62 0x00000000005a3fc8 in funcall_lambda (fun=8004101, nargs=1, 
    arg_vector=0xffffda410c20) at ./debian/build-src/src/eval.c:2863
#63 0x00000000005a39a8 in Ffuncall (nargs=2, args=0xffffda410c18)
    at ./debian/build-src/src/eval.c:2748
#64 0x00000000005ebaa0 in exec_byte_code (bytestr=7981004, vector=7981037, 
    maxdepth=86, args_template=2, nargs=0, args=0xffffda4111d8)
    at ./debian/build-src/src/bytecode.c:880
#65 0x00000000005a3fc8 in funcall_lambda (fun=7980957, nargs=0, 
    arg_vector=0xffffda4111d8) at ./debian/build-src/src/eval.c:2863
#66 0x00000000005a39a8 in Ffuncall (nargs=1, args=0xffffda4111d0)
    at ./debian/build-src/src/eval.c:2748
#67 0x00000000005ebaa0 in exec_byte_code (bytestr=7976948, vector=7976981, 
    maxdepth=50, args_template=2, nargs=0, args=0xffffda411670)
    at ./debian/build-src/src/bytecode.c:880
#68 0x00000000005a3fc8 in funcall_lambda (fun=7976901, nargs=0, 
    arg_vector=0xffffda411670) at ./debian/build-src/src/eval.c:2863
#69 0x00000000005a3d38 in apply_lambda (fun=7976901, args=0, count=4)
    at ./debian/build-src/src/eval.c:2800
#70 0x00000000005a21ac in eval_sub (form=15327827)
    at ./debian/build-src/src/eval.c:2217
#71 0x00000000005a16cc in Feval (form=15327827, lexical=0)
    at ./debian/build-src/src/eval.c:1994
#72 0x00000000004f4024 in top_level_2 ()
    at ./debian/build-src/src/keyboard.c:1121
#73 0x000000000059ffe4 in internal_condition_case (
    bfun=0x4f3ff8 <top_level_2>, handlers=16608, hfun=0x4f3968 <cmd_error>)
    at ./debian/build-src/src/eval.c:1315
#74 0x00000000004f4084 in top_level_1 (ignore=0)
    at ./debian/build-src/src/keyboard.c:1129
#75 0x000000000059f864 in internal_catch (tag=41184, 
    func=0x4f4030 <top_level_1>, arg=0) at ./debian/build-src/src/eval.c:1080
#76 0x00000000004f3f24 in command_loop ()
    at ./debian/build-src/src/keyboard.c:1090
#77 0x00000000004f33f8 in recursive_edit_1 ()
    at ./debian/build-src/src/keyboard.c:697
#78 0x00000000004f35c8 in Frecursive_edit ()
    at ./debian/build-src/src/keyboard.c:768
#79 0x00000000004f0d8c in main (argc=21, argv=0xffffda411c68)
    at ./debian/build-src/src/emacs.c:1629
sten0 commented 6 years ago

And for mips64el:

#0  0x000000ffe824cd08 in pselect ()
    from /lib/mips64el-linux-gnuabi64/libc.so.6
#1  0x0000000120199418 in wait_reading_process_output (
    time_limit=<optimized out>, nsecs=<optimized out>, 
    read_kbd=read_kbd@entry=0, do_display=do_display@entry=false, 
    wait_for_cell=wait_for_cell@entry=0, wait_proc=0x120d07c30, 
    just_wait_proc=<optimized out>) at ./debian/build-src/src/process.c:4833
#2  0x000000012019b040 in Faccept_process_output (process=4845501493, 
    seconds=<optimized out>, millisec=<optimized out>, 
    just_this_one=<optimized out>) at ./debian/build-src/src/process.c:4238
#3  0x000000012014e6a8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2182
#4  0x000000012014fc68 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#5  Fwhile (args=<optimized out>) at ./debian/build-src/src/eval.c:971
#6  0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#7  0x00000001201506d8 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#8  Flet (args=4837043344) at ./debian/build-src/src/eval.c:952
#9  0x000000012014e7d8 in eval_sub (form=form@entry=4836995168)
    at ./debian/build-src/src/eval.c:2125
#10 0x0000000120150b48 in internal_lisp_condition_case (var=<optimized out>, 
    bodyform=4836995168, handlers=<optimized out>)
    at ./debian/build-src/src/eval.c:1286
#11 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#12 0x000000012014f310 in Fif (args=4839911875)
    at ./debian/build-src/src/eval.c:385
#13 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#14 0x000000012014eb50 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#15 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#16 0x00000001201506d8 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#17 Flet (args=4837043344) at ./debian/build-src/src/eval.c:952
#18 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#19 0x000000012014efd8 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#20 funcall_lambda (fun=4839910003, fun@entry=4833207460, nargs=nargs@entry=2, 
    arg_vector=arg_vector@entry=0xfffff0f590)
    at ./debian/build-src/src/eval.c:2922
#21 0x000000012014f1a4 in apply_lambda (fun=4833207460, args=<optimized out>, 
    count=1099510642256, count@entry=2) at ./debian/build-src/src/eval.c:2800
#22 0x000000012014e4a4 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2247
#23 0x000000012014e8c8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2137
#24 0x00000001201505b0 in Flet (args=4837043344)
    at ./debian/build-src/src/eval.c:924
#25 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#26 0x000000012014eb50 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#27 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#28 0x0000000120150880 in Funwind_protect (args=4840606595)
    at ./debian/build-src/src/eval.c:3092
#29 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#30 0x00000001201506d8 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#31 Flet (args=4837043344) at ./debian/build-src/src/eval.c:952
#32 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#33 0x00000001201506d8 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#34 Flet (args=4837043344) at ./debian/build-src/src/eval.c:952
#35 0x000000012014e7d8 in eval_sub (form=<optimized out>)
    at ./debian/build-src/src/eval.c:2125
#36 0x000000012014efd8 in Fprogn (body=<optimized out>)
    at ./debian/build-src/src/eval.c:431
#37 funcall_lambda (fun=4840602627, nargs=nargs@entry=0, 
    arg_vector=arg_vector@entry=0xfffff100d8)
    at ./debian/build-src/src/eval.c:2922
#38 0x000000012014bfa8 in Ffuncall (nargs=1, args=args@entry=0xfffff100d0)
    at ./debian/build-src/src/eval.c:2760
#39 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=1030, nargs=nargs@entry=1, 
    args=<optimized out>, args@entry=0xfffff10340)
    at ./debian/build-src/src/bytecode.c:880
#40 0x000000012014ecf0 in funcall_lambda (fun=4845084189, nargs=nargs@entry=1, 
    arg_vector=arg_vector@entry=0xfffff10340)
    at ./debian/build-src/src/eval.c:2863
#41 0x000000012014bfa8 in Ffuncall (nargs=2, args=args@entry=0xfffff10338)
    at ./debian/build-src/src/eval.c:2760
#42 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=1030, nargs=nargs@entry=1, 
    args=<optimized out>, args@entry=0xfffff105c8)
    at ./debian/build-src/src/bytecode.c:880
#43 0x000000012014ecf0 in funcall_lambda (fun=4843855693, nargs=nargs@entry=1, 
    arg_vector=arg_vector@entry=0xfffff105c8)
    at ./debian/build-src/src/eval.c:2863
#44 0x000000012014bfa8 in Ffuncall (nargs=2, args=args@entry=0xfffff105c0)
    at ./debian/build-src/src/eval.c:2760
#45 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=3086, nargs=nargs@entry=3, 
    args=<optimized out>, args@entry=0xfffff10868)
    at ./debian/build-src/src/bytecode.c:880
#46 0x000000012014ecf0 in funcall_lambda (fun=4845411989, nargs=nargs@entry=3, 
    arg_vector=arg_vector@entry=0xfffff10868)
    at ./debian/build-src/src/eval.c:2863
#47 0x000000012014bfa8 in Ffuncall (nargs=4, args=args@entry=0xfffff10860)
    at ./debian/build-src/src/eval.c:2760
#48 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=2058, nargs=nargs@entry=2, 
    args=<optimized out>, args@entry=0xfffff10ab8)
    at ./debian/build-src/src/bytecode.c:880
#49 0x000000012014ecf0 in funcall_lambda (fun=4845412301, nargs=nargs@entry=2, 
    arg_vector=arg_vector@entry=0xfffff10ab8)
    at ./debian/build-src/src/eval.c:2863
#50 0x000000012014bfa8 in Ffuncall (nargs=3, args=args@entry=0xfffff10ab0)
    at ./debian/build-src/src/eval.c:2760
#51 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=1026, nargs=nargs@entry=1, 
    args=<optimized out>, args@entry=0xfffff10cf8)
    at ./debian/build-src/src/bytecode.c:880
#52 0x000000012014ecf0 in funcall_lambda (fun=4845420365, nargs=nargs@entry=1, 
    arg_vector=arg_vector@entry=0xfffff10cf8)
    at ./debian/build-src/src/eval.c:2863
#53 0x000000012014bfa8 in Ffuncall (nargs=2, args=args@entry=0xfffff10cf0)
    at ./debian/build-src/src/eval.c:2760
#54 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=1026, nargs=nargs@entry=0, 
    args=<optimized out>, args@entry=0xfffff10e70)
    at ./debian/build-src/src/bytecode.c:880
#55 0x000000012014ecf0 in funcall_lambda (fun=4845420469, 
    fun@entry=4833207460, nargs=nargs@entry=0, 
    arg_vector=arg_vector@entry=0xfffff10e70)
    at ./debian/build-src/src/eval.c:2863
#56 0x000000012014f1a4 in apply_lambda (fun=4833207460, args=<optimized out>, 
    count=1099510648608, count@entry=8) at ./debian/build-src/src/eval.c:2800
#57 0x000000012014e4a4 in eval_sub (form=form@entry=4840785475)
    at ./debian/build-src/src/eval.c:2247
#58 0x0000000120150cb8 in Feval (form=4840785475, lexical=<optimized out>)
    at ./debian/build-src/src/eval.c:1994
#59 0x000000012014c194 in Ffuncall (nargs=2, args=args@entry=0xfffff11140)
    at ./debian/build-src/src/eval.c:2702
#60 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=1030, nargs=nargs@entry=1, 
    args=<optimized out>, args@entry=0xfffff113b0)
    at ./debian/build-src/src/bytecode.c:880
#61 0x000000012014ecf0 in funcall_lambda (fun=4835188525, nargs=nargs@entry=1, 
    arg_vector=arg_vector@entry=0xfffff113b0)
    at ./debian/build-src/src/eval.c:2863
#62 0x000000012014bfa8 in Ffuncall (nargs=2, args=args@entry=0xfffff113a8)
    at ./debian/build-src/src/eval.c:2760
#63 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=2, nargs=nargs@entry=0, 
    args=<optimized out>, args@entry=0xfffff11678)
    at ./debian/build-src/src/bytecode.c:880
#64 0x000000012014ecf0 in funcall_lambda (fun=4835165381, nargs=nargs@entry=0, 
    arg_vector=arg_vector@entry=0xfffff11678)
    at ./debian/build-src/src/eval.c:2863
#65 0x000000012014bfa8 in Ffuncall (nargs=1, args=args@entry=0xfffff11670)
    at ./debian/build-src/src/eval.c:2760
#66 0x000000012018c44c in exec_byte_code (bytestr=<optimized out>, 
    vector=<optimized out>, maxdepth=<optimized out>, 
    args_template=args_template@entry=2, nargs=nargs@entry=0, 
    args=<optimized out>, args@entry=0xfffff11830)
    at ./debian/build-src/src/bytecode.c:880
#67 0x000000012014ecf0 in funcall_lambda (fun=4835161325, 
    fun@entry=4833207460, nargs=nargs@entry=0, 
    arg_vector=arg_vector@entry=0xfffff11830)
    at ./debian/build-src/src/eval.c:2863
#68 0x000000012014f1a4 in apply_lambda (fun=4833207460, args=<optimized out>, 
    count=1099510651104, count@entry=4837462323)
    at ./debian/build-src/src/eval.c:2800
#69 0x000000012014e4a4 in eval_sub (form=form@entry=4842557875)
    at ./debian/build-src/src/eval.c:2247
#70 0x0000000120150cb8 in Feval (form=4842557875, lexical=lexical@entry=0)
    at ./debian/build-src/src/eval.c:1994
#71 0x00000001200c53dc in top_level_2 ()
    at ./debian/build-src/src/keyboard.c:1121
#72 0x000000012014b2b0 in internal_condition_case (
    bfun=bfun@entry=0x1200c53b0 <top_level_2>, handlers=handlers@entry=16608, 
    hfun=hfun@entry=0x1200caca0 <cmd_error>)
    at ./debian/build-src/src/eval.c:1315
#73 0x00000001200c69f8 in top_level_1 (ignore=ignore@entry=0)
    at ./debian/build-src/src/keyboard.c:1129
#74 0x000000012014b204 in internal_catch (tag=tag@entry=41184, 
    func=func@entry=0x1200c6968 <top_level_1>, arg=arg@entry=0)
    at ./debian/build-src/src/eval.c:1080
#75 0x00000001200c5300 in command_loop ()
    at ./debian/build-src/src/keyboard.c:1090
#76 0x00000001200ca6c0 in recursive_edit_1 ()
    at ./debian/build-src/src/keyboard.c:697
#77 0x00000001200cab9c in Frecursive_edit ()
    at ./debian/build-src/src/keyboard.c:768
#78 0x000000012001bc88 in main (argc=<optimized out>, argv=0xfffff11d28)
    at ./debian/build-src/src/emacs.c:1629
sten0 commented 6 years ago

To gather another experimental data point, I did an experimental build with LLVM-3.8+Clang-5. This time arm64 and mips64el passed, but amd64 failed! I wonder if the compiler choice is just white noise, and if there's an odd interaction in the timing that could be sorted out in test irony-iotask-schedule/task-update/invalid-msg ? I'll post the backtrace as soon as I get it. Here is a link to the build log for the LLVM+Clang amd64 build: https://buildd.debian.org/status/fetch.php?pkg=irony-mode&arch=amd64&ver=1.2.0-2~exp1&stamp=1510272887&raw=0

sten0 commented 6 years ago

Ok, so the amd64 one sometimes fails, and sometimes doesn't. Bunk (on #debian-mentors) and I wonder if we're hitting a race condition somewhere, which is why some builds pass and some builds fail.

sten0 commented 6 years ago

I get ten "emacs-irony-test process stopped!". Warnings on my fast dev box, where there are only five on the build servers. Here is the ert backtrace for amd64, when irony-server is compiled with LLVM+Clang rather than GCC:

   dh_elpa_test -a -O-Dserver
    emacs -batch -Q -l package --eval "(add-to-list 'package-directory-list \"/usr/share/emacs/site-lisp/elpa\")" --eval "(add-to-list 'package-directory-list \"/usr/share/emacs/site-lisp/elpa-src\")" -f package-initialize -L . -l server/test/elisp/irony.el -l server/test/elisp/irony-iotask.el -l server/test/elisp/irony-cdb-json.el --eval \(ert-run-tests-batch-and-exit\)
Loading /<<PKGBUILDDIR>>/server/test/elisp/test-config.el (source)...
Loading /<<PKGBUILDDIR>>/server/test/elisp/test-config.el (source)...
Loading /<<PKGBUILDDIR>>/server/test/elisp/test-config.el (source)...
Running 41 tests (2017-11-02 10:56:22+0000)
   passed   1/41  cdb/choose-closest-path/chooses-closest
   passed   2/41  cdb/choose-closest-path/chooses-closest2
   passed   3/41  cdb/choose-closest-path/prefers-deeper
   passed   4/41  cdb/choose-closest-path/prefers-deeper2
   passed   5/41  cdb/choose-closest-path/will-survive-garbage
   passed   6/41  cdb/locate-db/choose-among-candidates
   passed   7/41  cdb/locate-dominating-file-with-dirs/children-first
   passed   8/41  cdb/parse/simple/compile-options
   passed   9/41  cdb/parse/simple/invocation-directory
   passed  10/41  cdb/parse/simple/path-is-absolute
emacs-irony-test process stopped!
   passed  11/41  irony-iotask-chain/simple
   passed  12/41  irony-iotask-result/get-empty
   passed  13/41  irony-iotask-result/ready-p-error
   passed  14/41  irony-iotask-result/ready-p-value
   passed  15/41  irony-iotask-result/set-error
   passed  16/41  irony-iotask-result/set-error-data
   passed  17/41  irony-iotask-result/set-value
emacs-irony-test process stopped!
   passed  18/41  irony-iotask-schedule/callback/recalls-schedule
emacs-irony-test process stopped!
   passed  19/41  irony-iotask-schedule/task-finish/simple
emacs-irony-test process stopped!
   passed  20/41  irony-iotask-schedule/task-on-error/simple
emacs-irony-test process stopped!
   passed  21/41  irony-iotask-schedule/task-on-success/simple
Test irony-iotask-schedule/task-update/invalid-msg backtrace:
  (if (unwind-protect (setq value-97 (apply fn-95 args-96)) (setq form
  (let (form-description-99) (if (unwind-protect (setq value-97 (apply
  (let ((value-97 (quote ert-form-evaluation-aborted-98))) (let (form-
  (let ((fn-95 (function string=)) (args-96 (list (buffer-string) "exi
  (progn (let ((fn-95 (function string=)) (args-96 (list (buffer-strin
  (if (>= (buffer-size) (length "exit\n")) (progn (let ((fn-95 (functi
  (save-current-buffer (set-buffer (process-buffer process)) (goto-cha
  (progn (save-current-buffer (set-buffer (process-buffer process)) (g
  (if (buffer-live-p (process-buffer process)) (progn (save-current-bu
  irony-iotask-echo-process-exit-filter(#<process emacs-irony-test> "e
  sleep-for(0.05)
  sit-for(0.05)
  (while (process-live-p process) (sit-for 0.05))
  (progn (while (process-live-p process) (sit-for 0.05)))
  (unwind-protect (progn (while (process-live-p process) (sit-for 0.05
  (let* ((-with-timeout-timer- (run-with-timer 1 nil (function (lambda
  (catch (quote timeout) (let* ((-with-timeout-timer- (run-with-timer 
  (let ((-with-timeout-value- (catch (quote timeout) (let* ((-with-tim
  (unwind-protect (progn (irony-iotask-setup-process process) (let ((f
  (let ((process-connection-type nil) (process-adaptive-read-buffering
  (let ((task (irony-iotask-package-task irony-iotask/task-invalid-msg
  (lambda nil (let ((task (irony-iotask-package-task irony-iotask/task
  ert--run-test-internal([cl-struct-ert--test-execution-info [cl-struc
  ert-run-test([cl-struct-ert-test irony-iotask-schedule/task-update/i
  ert-run-or-rerun-test([cl-struct-ert--stats t [[cl-struct-ert-test c
  ert-run-tests(t #[385 "\306\307\"\203G\211\211G\310U\203\211@\20
  ert-run-tests-batch(nil)
  ert-run-tests-batch-and-exit()
  eval((ert-run-tests-batch-and-exit))
  command-line-1(("-l" "package" "--eval" "(add-to-list 'package-direc
  command-line()
  normal-top-level()
Test irony-iotask-schedule/task-update/invalid-msg condition:
    (ert-test-failed
     ((should
       (string=
    (buffer-string)
    "exit
"))
      :form
      (string= "
exit" "exit
")
      :value nil))
   FAILED  22/41  irony-iotask-schedule/task-update/invalid-msg
emacs-irony-test process stopped!
E: Build killed with signal TERM after 150 minutes of inactivity
sten0 commented 6 years ago

Is the exit string the problem?

Sarcasm commented 6 years ago

Hey, thanks for reporting the issue and following up on it. I took a quick look, and it's possible that the failure test was exiting before the invalid message was processed, meaning when we were waiting for the clean exit message we got some of the failure msg bits coming up. Let me know if you can still reproduce the issue with the latest change. The backtrace was very helpful localizing this race.

sten0 commented 6 years ago

Sure thing, I'll prepare an upload this afternoon and should have results tomorrow. Just to confirm, the GCC-7 vs Clang compiled irony-server is white noise, yes? On #debian-mentors _jwilk wrote "Debian's libclang was built with gcc, so I think building irony-mode with gcc too is a safer bet" and I'm inclined to agree, but I honestly don't know anything about LLVM or Clang's particularities.

I ask because I'll switch back to GCC to test your patch if you think that's best.

Sarcasm commented 6 years ago

Yes I think GCC is correct. irony-mode uses a library provided by the Clang project, but this is unrelated to the toolchain used to build irony-server, it's just a library like any other. irony-server does not depend on Clang the compiler per se.

sten0 commented 6 years ago

Ok, I've switched back to GCC. Thank you for the clarification! I'm happy the backtraces helped :-) If you want to monitor the builds yourself, wait for version 1.2.0-2~exp2 to appear at the following URL: https://buildd.debian.org/status/package.php?p=irony-mode&suite=experimental

Sarcasm commented 6 years ago

So is it okay? I see the mips*el targets are still in need of build, but it looks like the other architectures went fine, right?

sten0 commented 6 years ago

I believe its fixed! I looked into this some more...and it turns out the LLVM/Clang team haven't gotten llvm-toolchain-5.0 into a good state on on mips*el yet, even though they asked to transition irony-mode to 5.0, because 3.8 will be dropped from Debian. eg: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=873410 https://buildd.debian.org/status/package.php?p=llvm-toolchain-5.0&suite=unstable https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881663

So I downgraded to linking with libclang-4.0 and all was well: https://buildd.debian.org/status/package.php?p=irony-mode&suite=unstable

Thank you! Nicholas

sten0 commented 6 years ago

Confirmed fixed in src:irony-mode-1.2.0-3 because https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=881663 has been resolved.