跳轉到內容

ROSE 編譯器框架/Jenkins 失敗

來自華夏公益教科書

各種失敗

[編輯 | 編輯原始碼]

問題 失敗於astFileIOTests:

     filename = /getcwd: : No such file or directory
...
Error preDeleteTests(): classType->get_declaration() = 0x25492af0 = SgClassDeclaration 
make[5]: *** [test-read-medium] Aborted
make[4]: *** [check-local] Error 2

解決方案:這通常是由於系統錯誤導致的,因此解決方案是簡單地重新啟動失敗的作業。


問題 失敗於git-clone:

ERROR: Error cloning remote repo 'origin' : Could not clone rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git
hudson.plugins.git.GitException: Could not clone rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git
	at hudson.plugins.git.GitAPI.clone(GitAPI.java:271)
	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1040)
	at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:982)
	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2273)
	at hudson.remoting.UserRequest.perform(UserRequest.java:118)
	at hudson.remoting.UserRequest.perform(UserRequest.java:48)
	at hudson.remoting.Request$2.run(Request.java:270)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
...

解決方案:這通常是由於系統錯誤導致的,因此解決方案是簡單地重新啟動失敗的作業。


問題 失敗於git-clone或者ssh:

ControlSocket /tmp/rose-dev@rosecompiler.llnl.gov:22 already exists
fatal: The remote end hung up unexpectedly

	at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:863)
	at hudson.plugins.git.GitAPI.access$000(GitAPI.java:40)
	at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:267)
	at hudson.plugins.git.GitAPI$1.invoke(GitAPI.java:246)
	at hudson.FilePath.act(FilePath.java:852)
	at hudson.FilePath.act(FilePath.java:825)
	at hudson.plugins.git.GitAPI.clone(GitAPI.java:246)
	... 12 more
Trying next repository
ERROR: Could not clone repository
FATAL: Could not clone

解決方案:此處的錯誤與 SSH 配置有關 (~/.ssh/config),特別是ControlSocket設定。解決方案可能是刪除此可選 (方便) 配置。


問題 失敗於git-submodule-update:

Commencing build of Revision 1d4fd18f6d17dd66553a248496026ceb88773fac (detached)
Merging Revision 1d4fd18f6d17dd66553a248496026ceb88773fac (detached) onto master
FATAL: Command "git submodule update" returned status code 1:
fatal: reference is not a tree: d19d03c5d63860f0e9cc1c35afc4f8b8ca682afd
Unable to checkout 'd19d03c5d63860f0e9cc1c35afc4f8b8ca682afd' in submodule path 'src/frontend/CxxFrontend/EDG'


解決方案:確保您已推送了伴隨的子模組提交。


問題 執行指令碼時出現輸入/輸出錯誤

/tmp/hudson2706138848682410422.sh: line 29: /home/hudson-rose/Applications/jenkins/scripts/tests/rose-test.sh: Input/output error
Build step 'Execute shell' marked build as failure


解決方案:重新啟動作業;這是一個可能與 NFS 相關的 I/O 錯誤。


問題' 從 origin / origin 獲取失敗 - 可能不可用。繼續執行。

Fetching upstream changes from rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway.
hudson.plugins.git.GitException: Command "git fetch -t rose-dev@rosecompiler.llnl.gov:rose/edg4x/rose-sh.git +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: ssh_exchange_identification: Connection closed by remote host
fatal: The remote end hung up unexpectedly

	at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:863)


解決方案:重新啟動作業;這是由於 ?。


問題' $ROSE_INSTALL 不存在

$ROSE_INSTALL does not exist: '/home/hudson-rose/opt/rose/edg4x//frontend/EDG_4_4/gcc/4.2.4'
+ exit 1

解決方案:確保在給定的 GIT_COMMIT 和 GCC 版本下,make-install 作業已完成。然後,您可以重新啟動作業。


問題 rsync 錯誤:一些檔案/屬性未傳輸

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

解決方案:重新啟動作業可以解決問題。這通常是由於在複製 ROSE 工作區時遇到了一些 NFS、SSH 或許可權問題。


問題 ../../scripts/dotgenLetterPDF inputCode_wholeAST_1_WholeAST.dot inputCode_ASTWholeGraphGenerator_small.pdf 無法在使用者的路徑中找到 GraphViz dot 程式,忽略轉換為 PostScript 檔案 (不是問題) ... 如果 ! test -e inputCode_ASTWholeGraphGenerator_small.pdf; 然後退出 1; fi

http://hudson-rose-30:8080/job/C0-Start/

1. 問題無法乾淨地合併您的分支


解決方案:執行git-merge在您的本地機器上,以解決與 master 的合併衝突。

例如,


2. 問題失敗 有新的提交?


解決方案:確保您已提交了更改,然後再次推送您的更改集。否則,忽略訊息,也許您已經整合的分支只是被錯誤地測試了。


3. 問題無製表符字元策略檢測到錯誤。現在中止。

The following C/C++ source files contain TAB characters, which can be fixed
    in a variety of ways. Perhaps the easiest is to run this script again with
    the "--fix" switch (see "./scripts/policies/NoTabCharacters.pl --help" for details).
        src/midend/programAnalysis/genericDataflow/analysis/analysis.C
        src/midend/programAnalysis/genericDataflow/analysis/dataflow.C
        src/midend/programAnalysis/genericDataflow/simpleAnalyses/liveDeadVarAnalysis.C
Errors detected by the no tab characters policy. Aborting now.
Build step 'Execute shell' marked build as failure
Project C0-Start still waiting for 12 builds to complete
Notifying upstream projects of job completion
Finished: FAILURE


解決方案:按照說明從您的原始檔中刪除製表符字元

  $ cd $ROSE_SOURCE
  $ ./scripts/policies/NoTabCharacters.pl --fix

下次,請在推送之前在本地執行測試!(策略檢查是make all的一部分。您也可以單獨執行./scripts/policies-checker.sh從 ROSE 原始碼樹的頂層執行。)


4. 問題Unix 行結束策略檢測到錯誤。現在中止。

POLICY Checking unix line termination policy (./scripts/policies/UnixLineTermination.pl)
    ROSE developers predominantly use Unix-like systems for development. These
    systems use the ASCII LF (line feed, '\n') character for line termination.
    Some other operating systems insert a CR (carriage return, '\r') in front of
    the LF.  Insertion of the extra CR causes problems for revision management
    software and some Unix-based text editors which developers then have to work
    around and/or correct.  To convert a file from any mixture of CR+LF or
    LF-only line endings to LF-only line endings, use:
      * the unix command "dos2unix"
      * vim 7.0 and later commands ':update', ':setlocal ff=unix'.
      * in XEmacs use the "M-x set-buffer-file-coding-system RET" and
        enter "undecided-unix".
    The following source files have CR+LF line termination:
           3 ( 100%) lines in ./tests/CompileTests/Fortran_tests/test2011_Rice_function-no-result-1.f90
           6 ( 100%) lines in ./tests/CompileTests/Fortran_tests/test2011_Rice_function-no-result-2.f90
           3 ( 100%) lines in ./tests/CompileTests/Fortran_tests/test2011_Rice_function-result-1.f90
Errors detected by the unix line termination policy. Aborting now.
...
Finished: FAILURE


解決方案:按照說明從您的原始檔中刪除 CR+LF 行結束符字元

  $ man dos2unix

  $ dos2unix ${ROSE_SOURCE}/path/to/culprit/file_1
  $ dos2unix ${ROSE_SOURCE}/path/to/culprit/file_2
  ...
  $ dos2unix ${ROSE_SOURCE}/path/to/culprit/file_N

下次,請在推送之前在本地執行測試!(策略檢查是make all的一部分。您也可以單獨執行./scripts/policies-checker.sh從 ROSE 原始碼樹的頂層執行。)


5. 問題未使用原始碼策略檢測到錯誤。現在中止。

Number of remaining unused source files: 1482.
Errors detected by the unused sources policy. Aborting now.
...
Finished: FAILURE

“未使用原始碼策略”將透過“剩餘未使用的原始檔數量:1481。”。因此,您將看到至少 1481 行輸出原始檔。不,這不是您的問題。簡單來說,當此策略首次實施時,已經存在違規檔案。此策略的意義僅僅是不降低門檻,即不要超過 1481 個未使用的原始碼。(也許有一天我們真的會修復這個問題)。


解決方案:確保您的原始檔在與以下正則表示式匹配的某種 Makefile 中被提及/\/(Makefile\.am|Makefile_variables|CMakeList\.txt|make_rule\.inc|Makefile-.*\.inc)$/(截至提交213fd5d72,2012 年 7 月 26 日)。

下次,請在推送之前在本地執行測試!(策略檢查是make all的一部分。您也可以單獨執行./scripts/policies-checker.sh從 ROSE 原始碼樹的頂層執行。)

C6-ROSE-distcheck

[編輯 | 編輯原始碼]

http://hudson-rose-30:8080/job/C6-ROSE-distcheck/

問題:

make[3]: *** No rule to make target `README', needed by `distdir'.  Stop.
...
make: *** [distdir] Error 1

********************************************************************************
*** FAILED make distcheck step
********************************************************************************

問題在於,在執行“make dist” 時,某些檔案不會自動新增到軟體分發中。例如,輸入測試程式碼檔案,README檔案和配置檔案。

預後:

make distcheck":

1. "make dist” 的概述:確保您可以成功建立軟體包的 tarball 分發。

2. tarball 分發被解壓縮(解包),然後對該分發原始碼樹執行測試。

3. "$ROSE/configure”:使用 GNU Autoconf 配置軟體包。

4. "make all”:使用 GNU Automake 構建軟體包。

5. "make check”:使用 GNU Automake 執行軟體包的迴歸測試check-local規則。

檔案並不總是自動新增到分發 tarball 中(在“make dist” 期間)。但是,如果大多數原始碼和標頭檔案用於構建庫和可執行檔案(在 Automake Makefile 中指定,Makefile.am).

),則它們會自動新增。:

  • 解決方案將違規檔案新增到EXTRA_DISTMakefile.am中,該變數位於適當的
EXTRA_DIST = README project.config
  • 檔案中。make distcheck下次推送之前,在您的本地機器上測試“

” !

  • 參考


問題: 分發基礎知識:http://www.delorie.com/gnu/docs/automake/automake_91.html

config.status: error: cannot find input file: projects/RTC/docs/Makefile.in
make: *** [distcheck] Error 1

找不到輸入檔案 Makefile.inMakefile.am問題是,make dist沒有列出專案的所有子目錄。結果是,

無法建立完整的分發,因為它不知道要進入專案的子目錄,因為這些目錄沒有被列出。$ROSE/projects/RTC/Makefile.am

SUBDIRS = src

看起來像這樣但是,除了:

$ ls projects/RTC/
docs/  include/  libs/  Makefile.am  Makefile.in  Makefile.in~  RTC.C  src/  tests/

),則它們會自動新增。:

src/:

SUBDIRS = \
  docs \
  include \
  libs \
  src \
  tests

之外,還有更多子目錄。

make[4]: *** No rule to make target `../../../src/librose.la', needed by `vectorization'.  Stop.
make[4]: *** Waiting for unfinished jobs....
...
make: *** [distdir] Error 1

********************************************************************************
*** FAILED make distcheck step
********************************************************************************

將所有子目錄新增到問題:沒有為 librose.la 指定規則以下 Makefile.am 用於專案的 tests 目錄中。翻譯器只將

TESTCODES = \
   simpleArithmetic.c \
   simpleIntegerArithmetic.c \
   multiDimensionArray.c 

 ../src/vectorization:
   $(MAKE) -C $(top_builddir)/projects/vectorization/src

...

$(TESTCODES): ../src/vectorization
  ../src/vectorization $(srcdir)/$@

 check-local:
  @$(MAKE) $(TESTCODES)

EXTRA_DIST = $(TESTCODES)


TESTCODES問題:沒有為 librose.la 指定規則中的程式碼作為輸入並執行翻譯。將違規檔案新增到問題是,將違規檔案新增到


),則它們會自動新增。:

  • 中被列為分發物件,並且也用作 Makefile 中的目標規則。目前尚不清楚 Make distdir 如何處理這種情況。但是,避免在
TESTCODES = \
   simpleArithmetic.c \
   simpleIntegerArithmetic.c \
   multiDimensionArray.c 

+TEST_OUTPUTS = $(TESTCODES:.c=)

 ../src/vectorization:
   $(MAKE) -C $(top_builddir)/projects/vectorization/src

...

$(TEST_OUTPUTS): ../src/vectorization
  ../src/vectorization $(srcdir)/$(@:=.c)
 
check-local:
  @$(MAKE) $(TEST_OUTPUTS)

EXTRA_DIST = $(TESTCODES)

中使用該變數作為 Makefile 規則可以消除此問題。

C6-ROSE-distcheck


       ********************************************************************************
       *** Starting ROSE-build setup step
       ********************************************************************************
   
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/docs': Operation not permitted
       chmod: cannot read directory `./ROSE-build/rose-0.9.5a/docs': Permission denied
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/rose_config.h': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/rose_config.h.in': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2008-09-SignatureVisualizationOfSoftwareBinaries-SoftVis.pdf': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2009-TechniquesForSoftwareQualityAnalysisOfBinaries-ISTA.pdf': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/lcpc03_qsys_final.tgz': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2007-CommunicatingSoftwareArchitectureUsingAUnifiedSingle-ViewVisualization-ICECCS.pdf': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2003-ParallelObject-OrientedFrameworkOptimization-CPC.pdf': Operation not permitted
       chmod: changing permissions of `./ROSE-build/rose-0.9.5a/ROSE_ResearchPapers/2007-AnalyzingAndVisualizingWholeProgramArchitectures-Aerose-ICSE.pdf': Operation not permitted
       [many more similar lines omitted...]

新增另一個變數以用於 makefile 規則。

問題 操作不被允許

C2-ROSE-language-matrix-linux

[編輯 | 編輯原始碼]http://hudson-rose-30:8080/job/C2-ROSE-language-matrix-linux/ http://hudson-rose-30:8080/job/C2-ROSE-language-matrix-osx/問題: ROSE 具有配置選項(例如,--enable-only-java) 來切換 (編譯器前端) 語言支援(有關詳細資訊,請參見

$ROSE/configure --help

...: Assertion `! "[FATAL] [ROSE] [frontend] [C/C++] " "ROSE was not configured to support the C/C++ frontend."' failed.

)。Makefile.am許多新開發者對此並不瞭解,因此他們的工作經常在這些測試中失敗,因為他們對啟用或停用的前端有錯誤的假設。

解決方案:要透過這些測試,請確保您的 條件塊GNU Automake

if ROSE_BUILD_FORTRAN_LANGUAGE_SUPPORT
check-local:
  echo "Fortran (compiler frontend) language support is ENABLED!"
else
  echo "Fortran (compiler frontend) language support is DISABLED!"
endif


開啟 (編譯器前端) 語言特定邏輯。示例:在您特定於 Fortran 的工作中,使用以下條件:

與語言無關的測試程式碼 可以在

# TODO: add CUDA and OpenCL

##------------------------------------------------------------------------------
## Minimal input codes (just enough to be 'compiled')

#ROSE_BUILD_C_LANGUAGE_SUPPORT and ROSE_BUILD_CXX_LANGUAGE_SUPPORT are equivalent in ROSE due to the same EDG C++ frontend used. 
if ROSE_BUILD_C_LANGUAGE_SUPPORT
  __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.cpp
else
if ROSE_BUILD_FORTRAN_LANGUAGE_SUPPORT
  __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.f90
else
if ROSE_BUILD_JAVA_LANGUAGE_SUPPORT
  __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.java
else
if ROSE_BUILD_PHP_LANGUAGE_SUPPORT
  __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.php
else
if ROSE_BUILD_PYTHON_LANGUAGE_SUPPORT
  __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.py
else
if ROSE_BUILD_BINARY_ANALYSIS_SUPPORT
  __minimal_input_code = $(top_srcdir)/tests/input_codes/minimal/minimal.binary
endif # Binary analysis
endif # Python
endif # PHP
endif # Java
endif # Fortran
endif # C

${ROSE}tests/input_codes/Makefile.for.input.codes

中找到。
../../testTranslator -rose:java:d javac-output-classes -rose:verbose 0 ../../../../tests/CompileTests/Java_tests/test2011_02.java
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00002b2e79c63961, pid=24881, tid=47481965754688
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (11.0-b16 mixed mode linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x484961]
#
# An error report file with more information is saved as:
# /export/tmp.hudson-rose/hudson/workspace/C1-ROSE-from-scratch-linux/ROSE_TEST_BUILD_STYLE/make-check-install-minimal/ROSE_TEST_GCC_VERSION/4.0.4/label/amd64-linux/ROSE-build/tests/CompileTests/Java_tests/hs_err_pid24881.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
make[5]: *** [test2011_02.o] Error 1 make[5]: *** Waiting for unfinished jobs.... Test using Java 1.4 version support.


這些條件的完整示例在 此檔案 中給出。

#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00d38750, pid=12219, tid=3012402064
#
# Java VM: Java HotSpot(TM) Server VM (11.0-b16 mixed mode linux-x86)
# Problematic frame:
# C  [libstdc++.so.6+0xb5750]  __dynamic_cast+0x20
#
# An error report file with more information is saved as:
# /export/tmp.hudson-rose/hudson/workspace/C1-ROSE-from-scratch-linux/ROSE_TEST_BUILD_STYLE/make-check-install-minimal/ROSE_TEST_GCC_VERSION/4.1.2/label/i686-linux/ROSE-build/tests/CompileTests/Fortran_tests/hs_err_pid12219.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Note: astNode = 0x98dc790 = SgBasicBlock parent = 0x98fdad8 
Note: parentNode = 0x98dc790 = SgBasicBlock 
<font style="color:red">ERROR: <b>building test2011_Rice_A-cant-assert-keyword-nonnull.o</b></font>

Hide Details
make[6]: *** [test2011_Rice_A-cant-assert-keyword-nonnull.o] Aborted make[6]: *** Waiting for unfinished jobs....

Java 意外錯誤
華夏公益教科書