Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Julia tests don't pass #13

Open
Open
Labels
help wantedExtra attention is needed
@timholy

Description

@timholy

Here's a status list for progress with JuliaInterpreter, running Julia's own test suite. It's organized by the number of passes, failures (ideally should be 0), errors (ideally 0), broken (these are not JuliaInterpreter's problem), and aborted blocks (tests that took too long, given the settings). Some tests error outside a@test (marked by "X" in the table below) and others cause Julia itself to exit (marked by ☠️)
The tests below were run on a multiprocessor server from the Linux command line with

$ JULIA_CPU_THREADS=8 julia --startup-file=no juliatests.jl --nstmts 1000000 --skip compiler

The--nstmts 1000000 allows you to control the maximum number of interpreter statements per lowered block of code; tests that require more than this are marked as being "aborted." The default setting is 10000 (10^4). The higher you make this number, in general the more tests that should finish, but of course also the longer the suite will take to run. On my laptop, running with 2 worker processes the entire suite takes less than 5 minutes to complete using the default settings.

The remaining arguments are the same as given to Julia's owntest/runtests.jl: you can either provide a list of tests you want to run (e.g.,julia --startup-file=no juliatests.jl ambiguous), or you can list some to skip (here, all thecompiler/* tests). "Blank" indicates that one is running all the tests, so the line above runs everything except those incompiler/*.

The key point of having a status list is that it allows us to discover issues with JuliaInterpreter; consequently, the next step is to use these results to fix those problems. Help is very much wanted! Here are good ways to help out:

  • (moderate) investigate failures and file an issue with a MWE. Highest priority should probably go to ones that caused errors or process exit(note: with the possible exceptions ofchannels,worlds, andarrayops, it appears that most such errors are due to a single cause,MWE of char crash #28; deletingthis block and rebuilding Julia fixes them) (EDIT: all of these appear to be fixed now). Then would be error that occurs outside of tests (theXs), errors that occur inside a@test (those marked as Errors by the test suite), failures, and of lowest priority the aborted blocks. Note that aborted blocks can lead to test failures due to repeating work (seeCompiled resumers #44), so many of these may go away if you increasenstmts. However, note that aborted blocks could indicate that the interpreter has incorrectly gotten itself stuck in an infinite loop (yes, the author has seen that happen), and as a consequence it's possible that some of these too are actually errors.
  • (hard) fix the bugs.

A good way to get started is to pick one test that's exhibiting problems, anduncomment these lines. Then, the easiest way to dive into this is to run tests in a REPL session, e.g.,

include("utils.jl")const juliadir=dirname(dirname(Sys.BINDIR))const testdir=joinpath(juliadir,"test")configure_test()nstmts=10000run_test_by_eval("ambiguous",joinpath(testdir,"ambiguous.jl"), nstmts)# replace ambiguous with whatever test you want to run

from within JuliaInterpreter'stest/ directory. If you get failures, make sure you first check whether they go away if you increasenstmts (typically by 10x or more).

When you see test errors, the expression printed right above it is the one causing the problem. Go into the source code and copy the relevant source lines into aquote block. Once you have a minimal expressionex that triggers a problem, do this:

modexs, _= JuliaInterpreter.split_expressions(m, ex)for modexin modexs    frame= JuliaInterpreter.prepare_thunk(modex)    nstmtsleft= nstmtswhiletrue        ret, nstmtsleft=evaluate_limited!(frame, nstmtsleft,true)ifisa(ret, Aborted)run_compiled(frame)breakelseifisa(ret, Some)breakendendend

wherem is the module you want to execute this in. You may want to do

module JuliaTestsusing Test, Randomendm = JuliaTests

to isolate the tests from your current session.

To diagnose problems in greater detail, uncommentingthese lines can be a great first start.

Without further ado, here's the current list (note the time of the run to determine how current this is):

Julia Version 1.1.1-pre.0
Commit a84cf6f56c (2019-01-22 04:33 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Test run at: 2019-02-26T11:36:49.456

Maximum number of statements per lowered expression: 1000000

Test filePassesFailsErrorsBrokenAborted blocks
ambiguous620020
subarray2810001
strings/basic872930003
strings/search5220000
strings/util4490000
strings/io127490001
strings/types23026880003
unicode/utf8190000
coreXXXXX
worldsXXXXX
keywordargs1260100
numbers13872420009
subtypeXXXXX
char15220000
triplequote280000
intrinsics440000
dictXXXXX
hashingXXXXX
iobuffer2000000
staged555000
offsetarray34111001
arrayops18330007
tuple4830100
reduce2920002
reducedim6890001
abstractarray17910001
intfuncs44100000
simdloopXXXXX
vecelementXXXXX
rational975220002
bitarray8978260009
copy5110101
mathXXXXX
fastmath9073300
functional950000
iterators15550002
operators129220001
path27400122
ccallXXXXX
parse103030001
loading2272289409
bigint21560004
sorting48640004
spawnXXXXX
backtrace591210
exceptions2719600
fileXXXXX
readXXXXX
version24680001
namedtuple1520810
mpfr9320000
broadcast4180502
complex82500021
floatapprox490000
reflectionXXXXX
regex290000
float161240000
combinatorics980001
sysinfo20000
env530000
rounding1127200002
ranges12109069203277557
mod2pi800000
euler120005
showXXXXX
errorshowXXXXX
sets7730011
gotoXXXXX
llvmcallXXXXX
llvmcall260000
grisu6831001
some640000
metaXXXXX
stacktracesXXXXX
docsXXXXX
miscXXXXX
threadsXXXXX
enums880000
cmdlineargsXXXXX
int107270000
checked12190000
bitset1920000
floatfuncs1340001
boundscheckXXXXX
error300000
cartesian70000
osutils420000
channelsXXXXX
iostream60200
secretbuffer160000
specificityXXXXX
reinterpretarray1180001
syntaxXXXXX
logging1172000
missing4060011
asyncmap2920000
SparseArrays/higherorderfns7000790737
SparseArrays/sparse218400019
SparseArrays/sparsevector99210005
Pkg/resolve1820003
LinearAlgebra/triangular331940002
LinearAlgebra/qr31200001
LinearAlgebra/dense77200007
LinearAlgebra/matmul7110003
LinearAlgebra/schur3900001
LinearAlgebra/special10680003
LinearAlgebra/eigen4060002
LinearAlgebra/bunchkaufman51450001
LinearAlgebra/svd4120001
LinearAlgebra/lapack7782003
LinearAlgebra/tridiag12220002
LinearAlgebra/bidiag19460001
LinearAlgebra/diagonal16070002
LinearAlgebra/cholesky21940001
LinearAlgebra/lu11910003
LinearAlgebra/symmetric19820001
LinearAlgebra/generic4300003
LinearAlgebra/uniformscaling3380000
LinearAlgebra/lq12530001
LinearAlgebra/hessenberg400000
LinearAlgebra/blas6280001
LinearAlgebra/adjtrans2530001
LinearAlgebra/pinv2880001
LinearAlgebra/givens18400001
LinearAlgebra/structuredbroadcast4080002
LibGit2/libgit221925910
Dates/accessorsXXXXX
Dates/adjustersXXXXX
Dates/query9880000
Dates/periods6810000
Dates/ranges3491230005
Dates/rounding2960000
Dates/types1710000
Dates/io2580001
Dates/arithmetic3180000
Dates/conversions1600000
Base6410150001
CRC32c6580600
DelimitedFiles800101
FileWatchingXXXXX
Future00000
InteractiveUtils1043204
LibdlXXXXX
Logging351001
Markdown2320000
Mmap1310001
Printf70138000
Profile100002
REPL9900050
Random2030814007
SHAXXXXX
Serialization1051100
SocketsXXXXX
Statistics6060004
SuiteSparse7700000
TestXXXXX
UUIDs220000
Unicode7520000

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp