Data.table: Набор тестов достигает ограничения в 2 ГБ на 32-битной R-devel

Созданный на 19 апр. 2018  ·  40Комментарии  ·  Источник: Rdatatable/data.table

Я только что видел это здесь:
https://ci.appveyor.com/project/Rdatatable/data-table/build/1.0.2337/job/3rppwcw31ent8g1r

Ян тоже видел это сегодня здесь:
https://github.com/Rdatatable/data.table/pull/2761#issuecomment -382277970

Так что, несмотря на все наши усилия, еще многое предстоит сделать.

Ошибка, которую я увидел, похожа на ошибку Яна:

  Running test id 1667.1      Error: memory exhausted (limit reached?)
  Error: memory exhausted (limit reached?)
  Error: memory exhausted (limit reached?)
  Execution halted

Это сообщение R, здесь:
https://github.com/wch/r-source/blob/trunk/src/main/memory.c#L2059
и глядя на контекст (внутри функции err_malloc), можно предположить, что экземпляр AppVeyor отклоняет запрос malloc R. (т.е. это не похоже на какое-то ограничение стека внутри самого R).

@jangorecki

  • Каков лимит памяти экземпляра AppVeyor? Я быстро посмотрел, и быстро появилось 4 ГБ, но я не уверен, правильно ли это. Если это 4 ГБ, я не понимаю, как мы этого добьемся.
  • Мы никогда не знали раньше, но теперь с вашими новыми диаграммами memtest кажется, что максимальный объем используемой памяти приближается к концу набора тестов и достигает 160 МБ. Если это так, то кажется очень низким. Я не могу представить, чтобы лимит AppVeyor был настолько низким. Конечно, намного меньше, чем 4 ГБ, и мы знаем, что теперь он передает ваш экземпляр 2 ГБ.
  • Я уже уменьшил использование памяти для тестов с неэквивалентным соединением в PR # 2733. Я почти уверен, что это очень помогло, и что использование памяти больше не в этой области.
  • Согласно диаграммам memtest, очень рано в тестовом наборе есть 3 больших увеличения использования памяти. Если бы таблицу использования памяти можно было отсортировать по изменениям и распечатать первые 10 в конце набора тестов, то мы могли бы увидеть, для каких тестов предназначены эти повышения. Если данные, используемые в этих трех тестах, равны rm() 'd после этих тестов, то, возможно, больше памяти будет доступно для тестов в конце. Однако, как я сказал выше, странно, что таблицы memtest показывают, что используется только 160 МБ! Уменьшение этих трех тестов будет потрачено впустую, если каким-то образом результаты memtest не отражают фактическое использование памяти в AppVeyor.
  • Долгая перспектива ... может быть, на AppVeyor запущен тест пакета предложений, который потребляет больше оперативной памяти, что не выполняется в среде, используемой для создания диаграмм memtest.

Самый полезный комментарий

R dev r74708 Windows 64 бит

data.table 1.11.3 2018-05-11 01:26:09 UTC

memtest.csv.txt

Все 40 Комментарий

Разве i386 не ограничен 2 ГБ?

@HughParsonage О ... да! Только что проверил, и да, оба задания не удались только на 32-битной версии. Спасибо!

Значит, это не AppVeyor. Это просто проблема 32 бит / 2 ГБ. Это оставляет нам вопрос, почему существует разрыв между 160 МБ в таблице memtest и 2 ГБ. Если масштаб memtest равен 10x (возможно, результат ps изменится и должен быть фиксированный масштаб, передав параметр?), Тогда это будет иметь больше смысла: 1600 МБ для R будет иметь смысл попытаться уменьшить, сосредоточив внимание на трех тестах к началу набора тестов.

(Я предполагаю, что внутренние заголовки R-объектов немного увеличились в R-devel, в результате чего в 32-разрядной версии R-release чуть меньше 2 ГБ, а R-devel просто закончился. Объяснение, почему это просто R-devel .)

Произошедшая со мной неудачная сборка была включена

Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server 2012 R2 x64 (build 9600)

* using platform: x86_64-w64-mingw32 (64-bit)

И не было установленных пакетов

Packages suggested but not available for checking:
  'bit64' 'curl' 'knitr' 'xts' 'nanotime' 'zoo' 'chron' 'reshape2'
  'testthat' 'GenomicRanges'

Наверное, не стоит использовать ps -o rss . Есть много тем, в которых обсуждается, что ps не дает правильного измерения памяти, а также что RSS завышает (что удивительно). Я проверил несколько размеров данных, созданных в R, и ps не меняет единицу измерения, всегда возвращает КБ.
Тогда попробую добавить еще один инструмент в memtest.

Как раз при этой ошибке, хотя да, платформа 64-битная, проверка многоархивности R CMD запускает тесты как для 32-битной, так и для 64-битной версии. Когда я проверил ваш сбой, я загрузил артефакт failure.zip и заглянул в каталоги i386 и x64. Только каталог i386 содержал файл main.fail, в то время как каталог x64 содержал main.out с передачей ok.
Да, согласитесь, тогда "пс". Я не могу понять, почему закономерность использования оперативной памяти имеет смысл, а не масштаб. Цифры не идеальны, но не в 10 раз меньше.

О ... как насчет free -m . Насколько я знаю, это тот, который важен и надежен. Дельты будут работать над этой фигурой. В CI никакие другие процессы не будут выполняться, но если они каким-то образом работают, то мы все равно хотим знать.

Я проверил использование памяти локально с помощью предположительно хорошего инструмента /usr/bin/time --verbose (который отличается от приложения bash time ).
Результаты показывают, что R-devel на самом деле потребляет гораздо меньше памяти, чем R 3.4.4 (по крайней мере, в Linux).
Тем не менее, это далеко от лимита в 2 ГБ, в любом случае, похоже, это не связано с набором тестов. Еще кое-что о R-devel и управлении памятью в 32-битной Windows - возможно, недавняя оптимизация памяти не работает на 32-битной Win.
Следующим шагом для устранения этой проблемы будет измерение памяти в Windows.
Создание виньеток увеличивает RSS на ~ 800 МБ в R 3.4.4, но они отключены в сценарии аппвейора.

R 3.4.4

Проверка R CMD заняла 364МБ RSS.

    Command being timed: "R CMD check data.table_1.10.5.tar.gz --ignore-vignettes --no-manual"
    Maximum resident set size (kbytes): 364648

test.data.table занял 351МБ RSS.

    Command being timed: "Rscript -e require(data.table); test.data.table()"
    Maximum resident set size (kbytes): 351236

R-devel (06.04.2018)

Проверка R CMD заняла 224МБ RSS.

    Command being timed: "/home/jan/R-devel/bin/R CMD check data.table_1.10.5.tar.gz --ignore-vignettes --no-manual"
    Maximum resident set size (kbytes): 224640

test.data.table занял 207МБ RSS.

    Command being timed: "/home/jan/R-devel/bin/Rscript -e require(data.table); test.data.table()"
    Maximum resident set size (kbytes): 207032

Просто случилось на win-builder ...
https://win-builder.r-project.org/0UGUaRk3ifo2/

** running tests for arch 'i386' ... [81s] ERROR
  Running 'autoprint.R' [1s]
  Comparing 'autoprint.Rout' to 'autoprint.Rout.save' ... OK
  Running 'knitr.R' [1s]
  Comparing 'knitr.Rout' to 'knitr.Rout.save' ... OK
  Running 'main.R' [76s]
  Running 'testthat.R' [2s]
Running the tests in 'tests/main.R' failed.
Complete output:
  > require(data.table)
  Loading required package: data.table
  > test.data.table()  # runs the main test suite of 5,000+ tests in /inst/tests/tests.Rraw
  Running D:/temp/Rtmpqkla50/RLIBS_169b8128a64aa/data.table/tests/tests.Rraw 

  Running test id 1.1      
  Running test id 1.2      
...
  Running test id 1648.086      
  Running test id 1648.087      
  Running test id 1648.088      
  Running test id 1648.089      
  Running test id 1648.09      
  Running test id 1648.091      Error: cannot allocate vector of size 4 Kb
  Execution halted
** running tests for arch 'x64' ... [135s] OK

так что, как и раньше, все нормально на 64-битной, но не на 32-битной.

мы сделали что-то вроде - каждые 500 тестов очищаем все устаревшие тестовые объекты, лежащие вокруг (x, y, DT, DT1, DT2, dt, df, ...)? должно быть незначительным, но может помочь

Возможно изменение:

nq_fun = function(n=100L) {

к

nq_fun = function(n=if (identical(.Platform$OS.type, "windows") && identical(.Platform$r_arch, "i386")) 10L else 100L) {

или nq_fun = function(n = if (memory.limit() < 3*1024) 10L else 100L) {

@MichaelChirico Ян реализовал трассировку памяти, но не похоже, что она использует более 150 МБ ОЗУ. Это странно. Да, я думал, что в rm() будут какие-то большие устаревшие объекты, но это не похоже на то, что из memtest.

@HughParsonage Однако мы не думаем, что тесты nq используют оперативную

Мое предположение, ничем не подкрепленное, заключается в том, что R 3.5.0 имеет некоторую ошибку памяти в 32-битной победе (AFAIK, эта проблема связана только с этой версией / платформой / аркой). В R 3.5.0 были значительные улучшения в обработке памяти, в отчетах тестов Linux 207 МБ, в то время как R 3.4.4 занимал 351 МБ.
Вы всегда можете запускать тесты, рисовать в интерактивном режиме и в конце исследовать объекты, оставшиеся после тестов. В любом случае отладка имеет больше смысла, используя 32-битные окна.

Я только что запустил test.data.table() в Windows 10, используя 32-разрядную версию R 3.5.0, и прошел нормально. (Однако некоторые пакеты Bioconductor не были установлены.)

@HughParsonage не могли бы вы занять большую часть памяти каким-либо другим процессом? оставьте 1.5-2гб памяти для тестов.

Поскольку доступно менее 1 ГБ, я смог запустить его без проблем.

@HughParsonage bit64 установлен, а от test.data.table() нет сообщений о том, что не удалось найти пакеты? Под пакетами Bioconductor вы подразумеваете GenomicRanges? Возможно, там используется память, если это единственная разница!

Да, извините, просто GenomicRanges не установлено.

Проблема в том, что мы летаем вслепую, поскольку ни AppVeyor, ни win-builder не говорят, что и когда использует таран. Ян сказал, что GenomicRanges включает в себя большое количество зависимостей, и мы все равно хотим удалить его, так что было бы разумно попробовать в следующий раз.

Идея Яна заключается в том, чтобы по окончании тестов осмотреть окружающую среду, почистить, чтобы увидеть, не остались ли какие-нибудь большие объекты. Если это так, может быть rm() 'd после их теста.

В результате установки GenomicRanges будет установлено 11 пакетов, один из которых 17 МБ. Appveyor не устанавливает GenomicRanges, поэтому проблемы с ним не связаны. Предполагая, что сбой в Win Builder вызван той же проблемой, что и в 32-битных сборках win r-devel appveyor.
Из окон r-devel, построенных на appveyor:

Packages suggested but not available for checking:
  'bit64' 'curl' 'knitr' 'xts' 'nanotime' 'zoo' 'chron' 'reshape2'
  'testthat' 'GenomicRanges'

Хорошие помощники для проверки использования памяти объектами в рабочей области: https://stackoverflow.com/questions/1358003/tricks-to-manage-the-available-memory-in-an-r-session

Сюжет сгущается. Только что получил это от win-builder (с последним мастером на данный момент, потому что я тестировал свои коммиты, отключая большие тесты на 32-битной версии) ...
https://win-builder.r-project.org/1W7om9wWK1Un

Running test id 1372.24      
  Running test id 1372.25      
  Running test id 1372.26      
  Running test id 1372.27      
  Running test id 1372.28      Error in initialize(value, ...) : 
    GC encountered a node (0x1089b0e0) with an unknown SEXP type: <unknown> at memory.c:1626
  Calls: test.data.table ... normalizeSingleBracketSubscript -> NSBS -> NSBS -> new2 -> new
  Execution halted

1372. * - это GenomicRanges.
Предположение Яна о том, что в R 3.5 на 32-битной версии есть редкая ошибка, выглядит хорошо.

Так что тестирование с GenomicRanges имеет смысл ...
Упомянутая ошибка: https://github.com/wch/r-source/blob/trunk/src/main/memory.c#L3043 -L3062
В конце концов мы можем попробовать перенести тесты GenomicRanges в other.Rraw и GenomicRanges с DESCRIPTION на inst/tests/tests-DESCRIPTION . Хотя это может помочь пройти тесты, это не решит основную проблему.
Достаточно много изменений в memory.c за последние месяцы: https://github.com/wch/r-source/commit/trunk/src/main/memory.c

Эта ошибка установки из-за того, что горит zlibbioc (зависимость GenomicRanges )?

trying URL 'https://bioconductor.org/packages/release/bioc/src/contrib/zlibbioc_1.24.0.tar.gz'
Content type 'application/x-gzip' length 257311 bytes (251 KB)
downloaded 251 KB

* installing *source* package 'zlibbioc' ...

   **********************************************
   WARNING: this package has a configure script
         It probably needs manual configuration
   **********************************************


** libs

*** arch - i386
mkdir -p "C:/R/R-3.5.0/library/zlibbioc/include" "C:/R/R-3.5.0/library/zlibbioc/libs/i386"
make -C zlib-1.2.5 -fwin32/Makefile.gcc libzbioc.a zlib1bioc.dll
make[1]: Entering directory `/cygdrive/c/Users/hughp/AppData/Local/Temp/Rtmp6HboKw/R.INSTALLb0c7c2c5bc/zlibbioc/src-i386/zlib-1.2.5'
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o adler32.o adler32.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o compress.o compress.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o crc32.o crc32.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o deflate.o deflate.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o gzclose.o gzclose.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o gzlib.o gzlib.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o gzread.o gzread.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o gzwrite.o gzwrite.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o infback.o infback.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o inffast.o inffast.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o inflate.o inflate.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o inftrees.o inftrees.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o trees.o trees.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o uncompr.o uncompr.c
gcc -m32  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o zutil.o zutil.c
ar rcs libzbioc.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o 
windres --define GCC_WINDRES --target=pe-i386 -o zlibrc.o win32/zlib1.rc
gcc -m32 -shared -Wl,--out-implib,libzbiocdll.a  \
-o zlib1bioc.dll win32/zlib.def adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o  zlibrc.o
strip zlib1bioc.dll
make[1]: Leaving directory `/cygdrive/c/Users/hughp/AppData/Local/Temp/Rtmp6HboKw/R.INSTALLb0c7c2c5bc/zlibbioc/src-i386/zlib-1.2.5'
cp zlib-1.2.5/libzbioc.a zlib-1.2.5/zlib1bioc.dll \
            "C:/R/R-3.5.0/library/zlibbioc/libs/i386"
cp zlib-1.2.5/zconf.h zlib-1.2.5/zlib.h "C:/R/R-3.5.0/library/zlibbioc/include"
c:/Rtools/mingw_32/bin/gcc  -I"C:/R/R-35~1.0/include" -DNDEBUG          -O3 -Wall  -std=gnu99 -mtune=generic -c R_init_zlibbioc.c -o R_init_zlibbioc.o
c:/Rtools/mingw_32/bin/gcc -shared -s -static-libgcc -o zlibbioc.dll tmp.def R_init_zlibbioc.o -LC:/R/R-35~1.0/bin/i386 -lR
installing to C:/R/R-3.5.0/library/zlibbioc/libs/i386

*** arch - x64
mkdir -p "C:/R/R-3.5.0/library/zlibbioc/include" "C:/R/R-3.5.0/library/zlibbioc/libs/x64"
make -C zlib-1.2.5 -fwin32/Makefile.gcc libzbioc.a zlib1bioc.dll
make[1]: Entering directory `/cygdrive/c/Users/hughp/AppData/Local/Temp/Rtmp6HboKw/R.INSTALLb0c7c2c5bc/zlibbioc/src-x64/zlib-1.2.5'
gcc -m64  -O3 -Wall -DNO_VIZ -DZ_PREFIX -c -o adler32.o adler32.c
adler32.c:1:0: sorry, unimplemented: 64-bit mode not compiled in
 /* adler32.c -- compute the Adler-32 checksum of a data stream
 ^
make[1]: *** [adler32.o] Error 1
make[1]: Leaving directory `/cygdrive/c/Users/hughp/AppData/Local/Temp/Rtmp6HboKw/R.INSTALLb0c7c2c5bc/zlibbioc/src-x64/zlib-1.2.5'
make: *** [libzbioc] Error 2
ERROR: compilation failed for package 'zlibbioc'
* removing 'C:/R/R-3.5.0/library/zlibbioc'
In R CMD INSTALL
Warning in install.packages :
  installation of package ‘C:/Users/hughp/AppData/Local/Temp/Rtmpy6Q6nh/downloaded_packages/zlibbioc_1.24.0.tar.gz’ had non-zero exit status

С исчезновением GenomicRanges мы прошли беспроигрышный конструктор!
https://win-builder.r-project.org/EdA01oGY8uCP
https://win-builder.r-project.org/fmpoU9U9p8Xs

Хотя это исправляет win Builder, проблема, возникающая в appveyor, все еще актуальна, поскольку мы даже не используем GenomicRanges там.

Снова не удалось выиграть конструктор:
https://win-builder.r-project.org/3qtvkGEiFCxt/

R-devel, скомпилированный с помощью --strict-barrier и ASAN ( CRAN_Release. Cmd : 188 ), обнаружил следующее. Облегчение! Так что это был тест GenomicRanges, но не GenomicRanges как таковой или размер данных. Похоже на четко выраженную ошибку в ijoin.c . Ошибки memory exhausted мы наблюдали, возможны, когда на самом деле есть более раннее повреждение памяти, а не использование памяти вообще. Это совпадает с победой-строитель не удается. Однако насчет AppVeyor не уверен, поскольку, как сказал Ян, AppVeyor не запускал тест GenomicRanges, поскольку он не был установлен. Однако сейчас AppVeyor проводит этот тест. После этой может быть еще одна другая неисправность (посмотрим, когда она будет исправлена). Может быть, foverlaps () в других тестах запускает эту строку (эти тесты не сравниваются с GenomicRanges и всегда выполнялись). В любом случае ...

Running test id 1372.02      ijoin.c:157:24: runtime error: store to misaligned address 0x000000000001 for type 'int', which requires 4 byte alignment
0x000000000001: note: pointer points here
<memory cannot be printed>
ASAN:DEADLYSIGNAL
=================================================================
==28056==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000001 (pc 0x7f3e3e0b23b4 bp 0x7fff14f7a810 sp 0x7fff14f7a730 T0)
==28056==The signal is caused by a WRITE memory access.
==28056==Hint: address points to the zero page.
    #0 0x7f3e3e0b23b3 in lookup /tmp/Rtmp8649wu/R.INSTALL6cedcd51d6d/data.table/src/ijoin.c:157
    #1 0x55c02c4bcfbb in R_doDotCall /home/mdowle/build/R-devel/src/main/dotcode.c:596
    #2 0x55c02c5e3cd5 in bcEval /home/mdowle/build/R-devel/src/main/eval.c:7279
    #3 0x55c02c588a6d in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:624
    #4 0x55c02c58db20 in R_execClosure /home/mdowle/build/R-devel/src/main/eval.c:1764
    #5 0x55c02c58d006 in Rf_applyClosure /home/mdowle/build/R-devel/src/main/eval.c:1692
    #6 0x55c02c5898a3 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:747
    #7 0x55c02c59754e in do_set /home/mdowle/build/R-devel/src/main/eval.c:2778
    #8 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #9 0x55c02c595781 in do_begin /home/mdowle/build/R-devel/src/main/eval.c:2395
    #10 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #11 0x55c02c593daf in do_for /home/mdowle/build/R-devel/src/main/eval.c:2281
    #12 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #13 0x55c02c595781 in do_begin /home/mdowle/build/R-devel/src/main/eval.c:2395
    #14 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #15 0x55c02c593daf in do_for /home/mdowle/build/R-devel/src/main/eval.c:2281
    #16 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #17 0x55c02c595781 in do_begin /home/mdowle/build/R-devel/src/main/eval.c:2395
    #18 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #19 0x55c02c593daf in do_for /home/mdowle/build/R-devel/src/main/eval.c:2281
    #20 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #21 0x55c02c59ad25 in do_eval /home/mdowle/build/R-devel/src/main/eval.c:3181
    #22 0x55c02c6a3b76 in do_internal /home/mdowle/build/R-devel/src/main/names.c:1371
    #23 0x55c02c589202 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:699
    #24 0x55c02c58db20 in R_execClosure /home/mdowle/build/R-devel/src/main/eval.c:1764
    #25 0x55c02c58d006 in Rf_applyClosure /home/mdowle/build/R-devel/src/main/eval.c:1692
    #26 0x55c02c5b8354 in bcEval /home/mdowle/build/R-devel/src/main/eval.c:6739
    #27 0x55c02c588a6d in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:624
    #28 0x55c02c58db20 in R_execClosure /home/mdowle/build/R-devel/src/main/eval.c:1764
    #29 0x55c02c58d006 in Rf_applyClosure /home/mdowle/build/R-devel/src/main/eval.c:1692
    #30 0x55c02c5b8354 in bcEval /home/mdowle/build/R-devel/src/main/eval.c:6739
    #31 0x55c02c588a6d in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:624
    #32 0x55c02c58db20 in R_execClosure /home/mdowle/build/R-devel/src/main/eval.c:1764
    #33 0x55c02c58d006 in Rf_applyClosure /home/mdowle/build/R-devel/src/main/eval.c:1692
    #34 0x55c02c5898a3 in Rf_eval /home/mdowle/build/R-devel/src/main/eval.c:747
    #35 0x55c02c64305d in Rf_ReplIteration /home/mdowle/build/R-devel/src/main/main.c:258
    #36 0x55c02c6434ba in R_ReplConsole /home/mdowle/build/R-devel/src/main/main.c:308
    #37 0x55c02c64727e in run_Rmainloop /home/mdowle/build/R-devel/src/main/main.c:1082
    #38 0x55c02c647294 in Rf_mainloop /home/mdowle/build/R-devel/src/main/main.c:1089
    #39 0x55c02c37e322 in main /home/mdowle/build/R-devel/src/main/Rmain.c:29
    #40 0x7f3e4d1531c0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x211c0)
    #41 0x55c02c37e1d9 in _start (/home/mdowle/build/R-devel/bin/exec/R+0x6061d9)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /tmp/Rtmp8649wu/R.INSTALL6cedcd51d6d/data.table/src/ijoin.c:157 in lookup
==28056==ABORTING

win-builder снова проходит нормально. Все три повторных подачи прошли. Тогда давайте запишем это в (теперь исправленный) сегв-сегв ijoin.c.

Я никогда не видел memory exhausted (limit reached?) на win-builder, только на AppVeyor. Эта проблема №2767 остается открытой и, похоже, предназначена только для AppVeyor. Поскольку win-builder теперь постоянно передает ОК, этого достаточно, чтобы перейти к CRAN.

Я могу представить это, но AppVeyor 32bit теперь кажется более стабильным после 3-4 запусков. После исправления ijoin.c segv он все еще не работал с ошибкой R memory exhausted (limit reached?) (так что это не помогло). Что изменилось с тех пор, так это то, что я добавил эти строки в appveyor.yml:

# Include the subset of Suggests that test.data.table() has tests for :
- travis-tool.sh r_install bit64
- travis-tool.sh r_install xts
- travis-tool.sh r_install nanotime
- travis-tool.sh r_install chron

Так что AppVeyor не пропускает ни одного теста. Возможно, где-то в тесте есть sample() (или аналогичный), в котором нет set.seed() . Данные такого теста будут зависеть от выборки, которая имела место в наборе тестов до этого момента, начиная с последнего set.seed() . Когда эти дополнительные тесты теперь выполняются (bit64, xts и т. Д.), Возможно, они делают некоторую выборку и впоследствии изменяют данные в надоедливом тесте, благодаря своему существованию. Возможно, надоедливый тест теперь берет другую ветку на других данных и больше не попадает в досадную черту.
Таким образом, для воспроизведения удаление этих 4 пакетов локально и повторный запуск сверхсильного R-devel --strict-bar ASAN вместе с инструментарием valgrid может выявить ошибку памяти. Поскольку все еще возможно, что memory exhausted является артефактом ошибки памяти. Есть еще несколько неинициализированных переменных, которые нужно очистить от valgrind. И еще предстоит достичь полного 100% покрытия.

Я удалил эти пакеты локально (bit64, xts, nanotime и chron) и повторно запустил test.data.table() в R, скомпилированном с ASAN и строгим барьером, в надежде увидеть намек на проблему. Но ничего. Здесь отлично работает.
Я также запускал 32-битную R-devel (2018-04-28 r74669) в Windows без установленных этих 4 пакетов. Точно так же, как это делал AppVeyor. Тоже все в порядке. Никаких признаков сбоя или неисправности памяти. Диспетчер задач не показывает ничего близкого к R с использованием 2 ГБ; всего 200 МБ, что соответствует другим результатам.
В любом случае придется выполнить valgrind и новую задачу в R-devel (# 2820). Может, это было связано с этим.

Последняя попытка. В Windows 32bit R-devel я сделал следующее:

for (i in 1:10) if (!test.data.table()) stop("one or more tests failed")

а затем после нескольких итераций я увидел это !!

Running test id 1253.466    Error: memory exhausted (limit reached?)
Error: memory exhausted (limit reached?)
Error: memory exhausted (limit reached?)

И действительно, процесс R (32-битный) близок к 4 ГБ.
image

что намного превосходит то, что мы наблюдали и ожидали, поскольку мы знаем, что набор тестов не так много использует.

Кто-нибудь еще видит это в винде? Повторить нужно 10 раз так, как кажется.

Может быть, если я повторю 10 раз локально, это удастся локально, тогда я смогу отследить с помощью инструментов Linux. Попытаюсь ...

Мне кажется, что это настоящая ошибка data.table, которая запускается случайными данными в тесте, вызывая срабатывание надоедливой ветки. На самом деле не 32-битная версия или Windows. Просто появляюсь там, пока случайно.

Это могло быть то же самое, что и # 2822, только там сбой.

Последний сбой «исчерпана память», как и раньше, произошел только на R-devel. Но на этот раз и 32-битные, и 64-битные, так что это не только 32-битные. Кроме того, на этот раз были загружены предложения и выполнены их тесты. Так что это не имеет никакого отношения к тому, установлены ли bit64, xts или nanotime или нет.

Ссылка на журнал: https://ci.appveyor.com/project/Rdatatable/data-table/build/1.0.2472/job/17yi0fe0562dht8v

Скопируйте и вставьте журнал AppVeyor

Build started
$ErrorActionPreference = "Stop"
Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
Import-Module '..\appveyor-tool.ps1'
git clone -q https://github.com/Rdatatable/data.table.git C:\projects\data-table
git fetch -q origin +refs/pull/2832/merge:
git checkout -qf FETCH_HEAD
Running Install scripts
Bootstrap
== 05/04/2018 02:22:51: Bootstrap: Start
== 05/04/2018 02:22:51: Adding GnuWin32 tools to PATH
== 05/04/2018 02:22:51: Setting time zone
UTC
GMT Standard Time
== 05/04/2018 02:22:51: Version: devel
== 05/04/2018 02:22:51: URL path: 
== 05/04/2018 02:22:51: Downloading R from: https://cloud.r-project.org/bin/windows/base/R-devel-win.exe
== 05/04/2018 02:22:54: Running R installer
R is now available on drive C:
== 05/04/2018 02:23:16: Setting PATH
== 05/04/2018 02:23:16: Testing R installation
R Under development (unstable) (2018-05-02 r74682)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server 2012 R2 x64 (build 9600)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
loaded via a namespace (and not attached):
[1] compiler_3.6.0
== 05/04/2018 02:23:17: Determining Rtools version
== 05/04/2018 02:23:17: Downloading Rtools from: https://cloud.r-project.org/bin/windows/Rtools/Rtools35.exe
== 05/04/2018 02:23:20: Running Rtools installer
Rtools is now available on drive C:
== 05/04/2018 02:24:04: Setting PATH
== 05/04/2018 02:24:04: Downloading and installing travis-tool.sh
@bash.exe ../travis-tool.sh %*
^\.travis\.yml$
^CONTRIBUTING\.md$
^ISSUE_TEMPLATE\.md$
^CRAN_Release\.cmd$
^deploy\.sh$
^\.emacs\.desktop
^\.emacs\.desktop\.lock
^.*\.Rproj$
^\.Rproj\.user$
^appveyor\.yml$
^.gitlab-ci\.yml$
^\.idea$
^\.RData$
^\.Rhistory$
^data\.table_.*\.tar\.gz$
^cc\.R$
^Makefile$
^NEWS.0.md$
^travis-tool\.sh\.cmd$
C:\Rtools\bin
C:\Rtools\MinGW\bin
C:\Rtools\mingw_64\bin
C:\R\bin\x64
C:\Rtools\mingw_64\bin
C:\MinGW\msys\1.0\bin
C:\Program Files (x86)\Git\bin
C:\Perl\site\bin
C:\Perl\bin
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Program Files\7-Zip
C:\Program Files\Microsoft\Web Platform Installer\
C:\Tools\GitVersion
C:\Tools\PsTools
C:\Program Files\Git LFS
C:\Program Files (x86)\Subversion\bin
C:\Program Files\Microsoft SQL Server\120\Tools\Binn\
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\
C:\Program Files\Microsoft SQL Server\120\DTS\Binn\
C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\
C:\Tools\WebDriver
C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.4\
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies\
C:\Program Files (x86)\Microsoft SDKs\Azure\CLI\wbin
C:\Ruby193\bin
C:\Tools\NUnit\bin
C:\Tools\xUnit
C:\Tools\MSpec
C:\Tools\Coverity\bin
C:\Program Files (x86)\CMake\bin
C:\go\bin
C:\Program Files\Java\jdk1.8.0\bin
C:\Python27
C:\Program Files\nodejs
C:\Program Files (x86)\iojs
C:\Program Files\iojs
C:\Users\appveyor\AppData\Roaming\npm
C:\Program Files\Microsoft SQL Server\130\Tools\Binn\
C:\Program Files (x86)\MSBuild\14.0\Bin
C:\Tools\NuGet
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow
C:\Program Files\Microsoft DNX\Dnvm
C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\
C:\Program Files (x86)\Microsoft SQL Server\130\Tools\Binn\
C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\
C:\Program Files\Microsoft SQL Server\130\DTS\Binn\
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\
C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\
C:\Program Files (x86)\Apache\Maven\bin
C:\Python27\Scripts
C:\Tools\NUnit3
C:\Program Files\Mercurial\
C:\Program Files\LLVM\bin
C:\Program Files\dotnet\
C:\Tools\curl\bin
C:\Program Files\Amazon\AWSCLI\
C:\Program Files (x86)\Microsoft SQL Server\140\DTS\Binn\
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140
C:\Tools\vcpkg
C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\
C:\Program Files\Microsoft SQL Server\140\Tools\Binn\
C:\Program Files\Microsoft SQL Server\140\DTS\Binn\
C:\Program Files\PowerShell\6.0.0\
C:\Program Files\erl9.2\bin
C:\Program Files (x86)\nodejs\
C:\Program Files\Git\cmd
C:\Program Files\Git\usr\bin
C:\Program Files (x86)\Yarn\bin\
C:\Program Files (x86)\NSIS
C:\Tools\Octopus
C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code
C:\Program Files\Microsoft SDKs\Service Fabric\Tools\ServiceFabricLocalClusterManager
C:\ProgramData\chocolatey\bin
C:\Users\appveyor\AppData\Roaming\npm
C:\Users\appveyor\AppData\Local\Yarn\bin
C:\Program Files\AppVeyor\BuildAgent\
== 05/04/2018 02:24:04: Setting R_LIBS_USER
    Directory: C:\
Mode                LastWriteTime         Length Name                                                                                                                                                                                
----                -------------         ------ ----                                                                                                                                                                                
d-----         5/4/2018   2:24 AM                RLibrary                                                                                                                                                                            
== 05/04/2018 02:24:04: Setting TAR to 'internal'
== 05/04/2018 02:24:04: Bootstrap: Done
ECHO no Revision metadata added to DESCRIPTION
no Revision metadata added to DESCRIPTION
set _R_CHECK_FORCE_SUGGESTS_=false
travis-tool.sh r_install bit64
+ CRAN=http://cloud.r-project.org/
+ BIOC=http://bioconductor.org/biocLite.R
+ PKGTYPE=both
+ BIOC_USE_DEVEL=TRUE
++ uname -s
+ OS=MSYS_NT-6.3-WOW
+ PANDOC_VERSION=1.13.1
+ PANDOC_DIR=/opt/pandoc
+ PANDOC_URL=https://s3.amazonaws.com/rstudio-buildtools/pandoc-1.13.1.zip
+ PATH='/c/Rtools/bin:/c/Rtools/MinGW/bin:/c/Rtools/mingw_64/bin:/c/R/bin/x64:/c/Rtools/mingw_64/bin:/usr/bin:/c/Program Files (x86)/Git/bin:/c/Perl/site/bin:/c/Perl/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files/7-Zip:/c/Program Files/Microsoft/Web Platform Installer/:/c/Tools/GitVersion:/c/Tools/PsTools:/c/Program Files/Git LFS:/c/Program Files (x86)/Subversion/bin:/c/Program Files/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/110/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/ManagementStudio/:/c/Tools/WebDriver:/c/Program Files (x86)/Microsoft SDKs/TypeScript/1.4/:/c/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/:/c/Program Files (x86)/Microsoft SDKs/Azure/CLI/wbin:/c/Ruby193/bin:/c/Tools/NUnit/bin:/c/Tools/xUnit:/c/Tools/MSpec:/c/Tools/Coverity/bin:/c/Program Files (x86)/CMake/bin:/c/go/bin:/c/Program Files/Java/jdk1.8.0/bin:/c/Python27:/c/Program Files/nodejs:/c/Program Files (x86)/iojs:/c/Program Files/iojs:/c/Users/appveyor/AppData/Roaming/npm:/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/MSBuild/14.0/Bin:/c/Tools/NuGet:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files/Microsoft DNX/Dnvm:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Apache/Maven/bin:/c/Python27/Scripts:/c/Tools/NUnit3:/c/Program Files/Mercurial/:/c/Program Files/LLVM/bin:/c/Program Files/dotnet/:/c/Tools/curl/bin:/c/Program Files/Amazon/AWSCLI/:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/Extensions/Microsoft/SQLDB/DAC/140:/c/Tools/vcpkg:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files/PowerShell/6.0.0/:/c/Program Files/erl9.2/bin:/c/Program Files (x86)/nodejs/:/c/Program Files/Git/cmd:/c/Program Files/Git/usr/bin:/c/Program Files (x86)/Yarn/bin/:/c/Program Files (x86)/NSIS:/c/Tools/Octopus:/c/Program Files/Microsoft Service Fabric/bin/Fabric/Fabric.Code:/c/Program Files/Microsoft SDKs/Service Fabric/Tools/ServiceFabricLocalClusterManager:/c/ProgramData/chocolatey/bin:/c/Users/appveyor/AppData/Roaming/npm:/c/Users/appveyor/AppData/Local/Yarn/bin:/c/Program Files/AppVeyor/BuildAgent/:/usr/texbin'
+ R_BUILD_ARGS=--no-manual
+ R_CHECK_ARGS=--no-manual
+ R_USE_BIOC_CMDS='source('\''http://bioconductor.org/biocLite.R'\''); tryCatch(useDevel(TRUE), error=function(e) {if (!grepl('\''already in use'\'', e)) {e}}); options(repos=biocinstallRepos());'
+ COMMAND=r_install
+ echo 'Running command: r_install'
Running command: r_install
+ shift
+ case $COMMAND in
+ RInstall bit64
+ [[ '' == \b\i\t\6\4 ]]
+ echo 'Installing R package(s): bit64'
Installing R package(s): bit64
+ Rscript -e 'install.packages(commandArgs(TRUE), repos="http://cloud.r-project.org/", INSTALL_opts="", type="both")' bit64
Installing package into 'c:/RLibrary'
(as 'lib' is unspecified)
also installing the dependency 'bit'
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/bit_1.1-12.zip'
Content type 'application/zip' length 240057 bytes (234 KB)
==================================================
downloaded 234 KB
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/bit64_0.9-7.zip'
Content type 'application/zip' length 546956 bytes (534 KB)
==================================================
downloaded 534 KB
package 'bit' successfully unpacked and MD5 sums checked
package 'bit64' successfully unpacked and MD5 sums checked
The downloaded binary packages are in
    C:\Users\appveyor\AppData\Local\Temp\1\RtmpoX0Fgh\downloaded_packages
travis-tool.sh r_install xts
+ CRAN=http://cloud.r-project.org/
+ BIOC=http://bioconductor.org/biocLite.R
+ PKGTYPE=both
+ BIOC_USE_DEVEL=TRUE
++ uname -s
+ OS=MSYS_NT-6.3-WOW
+ PANDOC_VERSION=1.13.1
+ PANDOC_DIR=/opt/pandoc
+ PANDOC_URL=https://s3.amazonaws.com/rstudio-buildtools/pandoc-1.13.1.zip
+ PATH='/c/Rtools/bin:/c/Rtools/MinGW/bin:/c/Rtools/mingw_64/bin:/c/R/bin/x64:/c/Rtools/mingw_64/bin:/usr/bin:/c/Program Files (x86)/Git/bin:/c/Perl/site/bin:/c/Perl/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files/7-Zip:/c/Program Files/Microsoft/Web Platform Installer/:/c/Tools/GitVersion:/c/Tools/PsTools:/c/Program Files/Git LFS:/c/Program Files (x86)/Subversion/bin:/c/Program Files/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/110/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/ManagementStudio/:/c/Tools/WebDriver:/c/Program Files (x86)/Microsoft SDKs/TypeScript/1.4/:/c/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/:/c/Program Files (x86)/Microsoft SDKs/Azure/CLI/wbin:/c/Ruby193/bin:/c/Tools/NUnit/bin:/c/Tools/xUnit:/c/Tools/MSpec:/c/Tools/Coverity/bin:/c/Program Files (x86)/CMake/bin:/c/go/bin:/c/Program Files/Java/jdk1.8.0/bin:/c/Python27:/c/Program Files/nodejs:/c/Program Files (x86)/iojs:/c/Program Files/iojs:/c/Users/appveyor/AppData/Roaming/npm:/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/MSBuild/14.0/Bin:/c/Tools/NuGet:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files/Microsoft DNX/Dnvm:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Apache/Maven/bin:/c/Python27/Scripts:/c/Tools/NUnit3:/c/Program Files/Mercurial/:/c/Program Files/LLVM/bin:/c/Program Files/dotnet/:/c/Tools/curl/bin:/c/Program Files/Amazon/AWSCLI/:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/Extensions/Microsoft/SQLDB/DAC/140:/c/Tools/vcpkg:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files/PowerShell/6.0.0/:/c/Program Files/erl9.2/bin:/c/Program Files (x86)/nodejs/:/c/Program Files/Git/cmd:/c/Program Files/Git/usr/bin:/c/Program Files (x86)/Yarn/bin/:/c/Program Files (x86)/NSIS:/c/Tools/Octopus:/c/Program Files/Microsoft Service Fabric/bin/Fabric/Fabric.Code:/c/Program Files/Microsoft SDKs/Service Fabric/Tools/ServiceFabricLocalClusterManager:/c/ProgramData/chocolatey/bin:/c/Users/appveyor/AppData/Roaming/npm:/c/Users/appveyor/AppData/Local/Yarn/bin:/c/Program Files/AppVeyor/BuildAgent/:/usr/texbin'
+ R_BUILD_ARGS=--no-manual
+ R_CHECK_ARGS=--no-manual
+ R_USE_BIOC_CMDS='source('\''http://bioconductor.org/biocLite.R'\''); tryCatch(useDevel(TRUE), error=function(e) {if (!grepl('\''already in use'\'', e)) {e}}); options(repos=biocinstallRepos());'
+ COMMAND=r_install
+ echo 'Running command: r_install'
Running command: r_install
+ shift
+ case $COMMAND in
+ RInstall xts
+ [[ '' == \x\t\s ]]
+ echo 'Installing R package(s): xts'
Installing R package(s): xts
+ Rscript -e 'install.packages(commandArgs(TRUE), repos="http://cloud.r-project.org/", INSTALL_opts="", type="both")' xts
Installing package into 'c:/RLibrary'
(as 'lib' is unspecified)
also installing the dependency 'zoo'
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/zoo_1.8-1.zip'
Content type 'application/zip' length 1088462 bytes (1.0 MB)
==================================================
downloaded 1.0 MB
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/xts_0.10-2.zip'
Content type 'application/zip' length 944787 bytes (922 KB)
==================================================
downloaded 922 KB
package 'zoo' successfully unpacked and MD5 sums checked
package 'xts' successfully unpacked and MD5 sums checked
The downloaded binary packages are in
    C:\Users\appveyor\AppData\Local\Temp\1\RtmpYhGqGS\downloaded_packages
travis-tool.sh r_install nanotime
+ CRAN=http://cloud.r-project.org/
+ BIOC=http://bioconductor.org/biocLite.R
+ PKGTYPE=both
+ BIOC_USE_DEVEL=TRUE
++ uname -s
+ OS=MSYS_NT-6.3-WOW
+ PANDOC_VERSION=1.13.1
+ PANDOC_DIR=/opt/pandoc
+ PANDOC_URL=https://s3.amazonaws.com/rstudio-buildtools/pandoc-1.13.1.zip
+ PATH='/c/Rtools/bin:/c/Rtools/MinGW/bin:/c/Rtools/mingw_64/bin:/c/R/bin/x64:/c/Rtools/mingw_64/bin:/usr/bin:/c/Program Files (x86)/Git/bin:/c/Perl/site/bin:/c/Perl/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files/7-Zip:/c/Program Files/Microsoft/Web Platform Installer/:/c/Tools/GitVersion:/c/Tools/PsTools:/c/Program Files/Git LFS:/c/Program Files (x86)/Subversion/bin:/c/Program Files/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/110/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/ManagementStudio/:/c/Tools/WebDriver:/c/Program Files (x86)/Microsoft SDKs/TypeScript/1.4/:/c/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/:/c/Program Files (x86)/Microsoft SDKs/Azure/CLI/wbin:/c/Ruby193/bin:/c/Tools/NUnit/bin:/c/Tools/xUnit:/c/Tools/MSpec:/c/Tools/Coverity/bin:/c/Program Files (x86)/CMake/bin:/c/go/bin:/c/Program Files/Java/jdk1.8.0/bin:/c/Python27:/c/Program Files/nodejs:/c/Program Files (x86)/iojs:/c/Program Files/iojs:/c/Users/appveyor/AppData/Roaming/npm:/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/MSBuild/14.0/Bin:/c/Tools/NuGet:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files/Microsoft DNX/Dnvm:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Apache/Maven/bin:/c/Python27/Scripts:/c/Tools/NUnit3:/c/Program Files/Mercurial/:/c/Program Files/LLVM/bin:/c/Program Files/dotnet/:/c/Tools/curl/bin:/c/Program Files/Amazon/AWSCLI/:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/Extensions/Microsoft/SQLDB/DAC/140:/c/Tools/vcpkg:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files/PowerShell/6.0.0/:/c/Program Files/erl9.2/bin:/c/Program Files (x86)/nodejs/:/c/Program Files/Git/cmd:/c/Program Files/Git/usr/bin:/c/Program Files (x86)/Yarn/bin/:/c/Program Files (x86)/NSIS:/c/Tools/Octopus:/c/Program Files/Microsoft Service Fabric/bin/Fabric/Fabric.Code:/c/Program Files/Microsoft SDKs/Service Fabric/Tools/ServiceFabricLocalClusterManager:/c/ProgramData/chocolatey/bin:/c/Users/appveyor/AppData/Roaming/npm:/c/Users/appveyor/AppData/Local/Yarn/bin:/c/Program Files/AppVeyor/BuildAgent/:/usr/texbin'
+ R_BUILD_ARGS=--no-manual
+ R_CHECK_ARGS=--no-manual
+ R_USE_BIOC_CMDS='source('\''http://bioconductor.org/biocLite.R'\''); tryCatch(useDevel(TRUE), error=function(e) {if (!grepl('\''already in use'\'', e)) {e}}); options(repos=biocinstallRepos());'
+ COMMAND=r_install
+ echo 'Running command: r_install'
Running command: r_install
+ shift
+ case $COMMAND in
+ RInstall nanotime
+ [[ '' == \n\a\n\o\t\i\m\e ]]
+ echo 'Installing R package(s): nanotime'
Installing R package(s): nanotime
+ Rscript -e 'install.packages(commandArgs(TRUE), repos="http://cloud.r-project.org/", INSTALL_opts="", type="both")' nanotime
Installing package into 'c:/RLibrary'
(as 'lib' is unspecified)
also installing the dependencies 'Rcpp', 'RcppCCTZ'
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/Rcpp_0.12.16.zip'
Content type 'application/zip' length 4504406 bytes (4.3 MB)
==================================================
downloaded 4.3 MB
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/RcppCCTZ_0.2.3.zip'
Content type 'application/zip' length 737064 bytes (719 KB)
==================================================
downloaded 719 KB
trying URL 'http://cloud.r-project.org/bin/windows/contrib/3.6/nanotime_0.2.0.zip'
Content type 'application/zip' length 114037 bytes (111 KB)
==================================================
downloaded 111 KB
package 'Rcpp' successfully unpacked and MD5 sums checked
package 'RcppCCTZ' successfully unpacked and MD5 sums checked
package 'nanotime' successfully unpacked and MD5 sums checked
The downloaded binary packages are in
    C:\Users\appveyor\AppData\Local\Temp\1\Rtmpcd9ieQ\downloaded_packages
travis-tool.sh run_tests
+ CRAN=http://cloud.r-project.org/
+ BIOC=http://bioconductor.org/biocLite.R
+ PKGTYPE=both
+ BIOC_USE_DEVEL=TRUE
++ uname -s
+ OS=MSYS_NT-6.3-WOW
+ PANDOC_VERSION=1.13.1
+ PANDOC_DIR=/opt/pandoc
+ PANDOC_URL=https://s3.amazonaws.com/rstudio-buildtools/pandoc-1.13.1.zip
+ PATH='/c/Rtools/bin:/c/Rtools/MinGW/bin:/c/Rtools/mingw_64/bin:/c/R/bin/x64:/c/Rtools/mingw_64/bin:/usr/bin:/c/Program Files (x86)/Git/bin:/c/Perl/site/bin:/c/Perl/bin:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/c/Program Files/7-Zip:/c/Program Files/Microsoft/Web Platform Installer/:/c/Tools/GitVersion:/c/Tools/PsTools:/c/Program Files/Git LFS:/c/Program Files (x86)/Subversion/bin:/c/Program Files/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/110/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/:/c/Program Files/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/Tools/Binn/ManagementStudio/:/c/Tools/WebDriver:/c/Program Files (x86)/Microsoft SDKs/TypeScript/1.4/:/c/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/IDE/PrivateAssemblies/:/c/Program Files (x86)/Microsoft SDKs/Azure/CLI/wbin:/c/Ruby193/bin:/c/Tools/NUnit/bin:/c/Tools/xUnit:/c/Tools/MSpec:/c/Tools/Coverity/bin:/c/Program Files (x86)/CMake/bin:/c/go/bin:/c/Program Files/Java/jdk1.8.0/bin:/c/Python27:/c/Program Files/nodejs:/c/Program Files (x86)/iojs:/c/Program Files/iojs:/c/Users/appveyor/AppData/Roaming/npm:/c/Program Files/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/MSBuild/14.0/Bin:/c/Tools/NuGet:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/CommonExtensions/Microsoft/TestWindow:/c/Program Files/Microsoft DNX/Dnvm:/c/Program Files/Microsoft SQL Server/Client SDK/ODBC/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/Tools/Binn/:/c/Program Files (x86)/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files/Microsoft SQL Server/130/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/110/DTS/Binn/:/c/Program Files (x86)/Microsoft SQL Server/120/DTS/Binn/:/c/Program Files (x86)/Apache/Maven/bin:/c/Python27/Scripts:/c/Tools/NUnit3:/c/Program Files/Mercurial/:/c/Program Files/LLVM/bin:/c/Program Files/dotnet/:/c/Tools/curl/bin:/c/Program Files/Amazon/AWSCLI/:/c/Program Files (x86)/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files (x86)/Microsoft Visual Studio 14.0/Common7/IDE/Extensions/Microsoft/SQLDB/DAC/140:/c/Tools/vcpkg:/c/Program Files (x86)/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/Tools/Binn/:/c/Program Files/Microsoft SQL Server/140/DTS/Binn/:/c/Program Files/PowerShell/6.0.0/:/c/Program Files/erl9.2/bin:/c/Program Files (x86)/nodejs/:/c/Program Files/Git/cmd:/c/Program Files/Git/usr/bin:/c/Program Files (x86)/Yarn/bin/:/c/Program Files (x86)/NSIS:/c/Tools/Octopus:/c/Program Files/Microsoft Service Fabric/bin/Fabric/Fabric.Code:/c/Program Files/Microsoft SDKs/Service Fabric/Tools/ServiceFabricLocalClusterManager:/c/ProgramData/chocolatey/bin:/c/Users/appveyor/AppData/Roaming/npm:/c/Users/appveyor/AppData/Local/Yarn/bin:/c/Program Files/AppVeyor/BuildAgent/:/usr/texbin'
+ R_BUILD_ARGS=--no-manual
+ R_CHECK_ARGS=--no-manual
+ R_USE_BIOC_CMDS='source('\''http://bioconductor.org/biocLite.R'\''); tryCatch(useDevel(TRUE), error=function(e) {if (!grepl('\''already in use'\'', e)) {e}}); options(repos=biocinstallRepos());'
+ COMMAND=run_tests
+ echo 'Running command: run_tests'
Running command: run_tests
+ shift
+ case $COMMAND in
+ RunTests
+ echo 'Building with: R CMD build --no-manual'
Building with: R CMD build --no-manual
+ [[ MSYS_ == \M\I\N\G\W ]]
+ [[ MSYS == \M\S\Y\S ]]
+ [[ -d vignettes ]]
+ rm -rf vignettes
+ Rscript -e 'd <- read.dcf('\''DESCRIPTION'\''); d[, colnames(d) == '\''VignetteBuilder'\''] <- NA; write.dcf(d, '\''DESCRIPTION'\'')'
+ R CMD build --no-manual .
* checking for file './DESCRIPTION' ... OK
* preparing 'data.table':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* building 'data.table_1.11.1.tar.gz'
++ ls -1t data.table_1.11.1.tar.gz
++ head -n 1
+ FILE=data.table_1.11.1.tar.gz
+ [[ MSYS_ == \M\I\N\G\W ]]
+ [[ MSYS == \M\S\Y\S ]]
+ R_CHECK_INSTALL_ARGS=--install-args=--build
+ echo 'Testing with: R CMD check "data.table_1.11.1.tar.gz" --no-manual --install-args=--build'
Testing with: R CMD check "data.table_1.11.1.tar.gz" --no-manual --install-args=--build
+ _R_CHECK_CRAN_INCOMING_=FALSE
+ [[ FALSE == \F\A\L\S\E ]]
+ echo '(CRAN incoming checks are off)'
(CRAN incoming checks are off)
+ _R_CHECK_CRAN_INCOMING_=FALSE
+ R_QPDF=true
+ R CMD check data.table_1.11.1.tar.gz --no-manual --install-args=--build
* using log directory 'C:/projects/data-table/data.table.Rcheck'
* using R Under development (unstable) (2018-05-02 r74682)
* using platform: x86_64-w64-mingw32 (64-bit)
* using session charset: ISO8859-1
* using option '--no-manual'
* checking for file 'data.table/DESCRIPTION' ... OK
* this is package 'data.table' version '1.11.1'
* checking package namespace information ... OK
* checking package dependencies ... NOTE
Packages suggested but not available for checking:
  'curl' 'knitr' 'reshape2' 'testthat'
* checking if this is a source package ... OK
* checking if there is a namespace ... OK
* checking for executable files ... OK
* checking for hidden files and directories ... OK
* checking for portable file names ... OK
* checking whether package 'data.table' can be installed ... OK
* checking installed package size ... OK
* checking package directory ... OK
* checking DESCRIPTION meta-information ... OK
* checking top-level files ... OK
* checking for left-over files ... OK
* checking index information ... OK
* checking package subdirectories ... OK
* checking R files for non-ASCII characters ... OK
* checking R files for syntax errors ... OK
* loading checks for arch 'i386'
** checking whether the package can be loaded ... OK
** checking whether the package can be loaded with stated dependencies ... OK
** checking whether the package can be unloaded cleanly ... OK
** checking whether the namespace can be loaded with stated dependencies ... OK
** checking whether the namespace can be unloaded cleanly ... OK
** checking loading without being on the library search path ... OK
* loading checks for arch 'x64'
** checking whether the package can be loaded ... OK
** checking whether the package can be loaded with stated dependencies ... OK
** checking whether the package can be unloaded cleanly ... OK
** checking whether the namespace can be loaded with stated dependencies ... OK
** checking whether the namespace can be unloaded cleanly ... OK
** checking loading without being on the library search path ... OK
* checking dependencies in R code ... OK
* checking S3 generic/method consistency ... OK
* checking replacement functions ... OK
* checking foreign function calls ... OK
* checking R code for possible problems ... OK
* checking Rd files ... OK
* checking Rd metadata ... OK
* checking Rd cross-references ... NOTE
Package unavailable to check Rd xrefs: 'fastmatch'
* checking for missing documentation entries ... OK
* checking for code/documentation mismatches ... OK
* checking Rd \usage sections ... OK
* checking Rd contents ... OK
* checking for unstated dependencies in examples ... OK
* checking line endings in C/C++/Fortran sources/headers ... OK
* checking line endings in Makefiles ... OK
* checking compilation flags in Makevars ... OK
* checking for GNU extensions in Makefiles ... OK
* checking for portable use of $(BLAS_LIBS) and $(LAPACK_LIBS) ... OK
* checking compiled code ... OK
* checking examples ...
** running examples for arch 'i386' ... OK
** running examples for arch 'x64' ... OK
* checking for unstated dependencies in 'tests' ... OK
* checking tests ...
** running tests for arch 'i386' ...
  Running 'autoprint.R'
  Comparing 'autoprint.Rout' to 'autoprint.Rout.save' ... OK
  Running 'knitr.R'
  Comparing 'knitr.Rout' to 'knitr.Rout.save' ... OK
  Running 'main.R'
 ERROR
Running the tests in 'tests/main.R' failed.
Last 13 lines of output:
  Running test id 1253.195      
  Running test id 1253.196      
  Running test id 1253.197      
  Running test id 1253.198      
  Running test id 1253.199      
  Running test id 1253.2      
  Running test id 1253.201      
  Running test id 1253.202      
  Running test id 1253.203      
  Running test id 1253.204      
  Running test id 1253.205      
  Running test id 1253.206      
  Running test id 1253.207      Error: memory exhausted (limit reached?)
  Error: memory exhausted (limit reached?)
  Execution halted
** running tests for arch 'x64' ...
  Running 'autoprint.R'
  Comparing 'autoprint.Rout' to 'autoprint.Rout.save' ... OK
  Running 'knitr.R'
  Comparing 'knitr.Rout' to 'knitr.Rout.save' ... OK
  Running 'main.R'
 ERROR
Running the tests in 'tests/main.R' failed.
Last 13 lines of output:
  Running test id 1613.5531      
  Running test id 1613.5532      
  Running test id 1613.561      
  Running test id 1613.562      
  Running test id 1613.563      
  Running test id 1613.564      
  Running test id 1613.565      
  Running test id 1613.566      
  Running test id 1613.567      
  Running test id 1613.571      
  Running test id 1613.572      
  Running test id 1613.573      
  Running test id 1613.581      
  Running test id 1613.582      Error: memory exhausted (limit reached?)
  Execution halted
* DONE
Status: 2 ERRORs, 2 NOTEs
See
  'C:/projects/data-table/data.table.Rcheck/00check.log'
for details.
Command exited with code 1
7z a failure.zip *.Rcheck\*
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04
Scanning the drive:
26 folders, 462 files, 11121162 bytes (11 MiB)
Creating archive: failure.zip
Items to compress: 488
Files read from disk: 462
Archive size: 4104726 bytes (4009 KiB)
Everything is Ok
appveyor PushArtifact failure.zip
Uploading artifact failure.zip (4,104,726 bytes)...100%

Не знаю, связано ли это, но я только что столкнулся с этой ошибкой во время соединения ниже, которое раньше работало нормально. Объект dt занимает около 4 ГБ в памяти, но при выполнении этого соединения использование памяти R в Activity Monitor увеличивается до 16 ... моя информация о сеансе ниже.

dt[
    degrees[
        dt,
        max.int(SunNiva),
        on = .(id, KalenderAr < admission_year),
        by = .EACHI
    ],
    tmp.SunNiva_achieved_degree := i.V1,
    on = .(id, admission_year = KalenderAr)
]
R version 3.5.0 (2018-04-23)
Platform: x86_64-apple-darwin17.5.0 (64-bit)
Running under: macOS High Sierra 10.13.4

Matrix products: default
BLAS/LAPACK: /usr/local/Cellar/openblas/0.2.20_2/lib/libopenblas_haswellp-r0.2.20.dylib

data table: data.table 1.11.1 IN DEVELOPMENT built 2018-05-05

@adamaltmejd Спасибо за это - отлично. Не могли бы вы попробовать еще раз с мастером прямо сейчас, пожалуйста; за последние несколько дней исправлено несколько ошибок памяти. Если он все еще не работает, есть ли способ сгенерировать для нас фиктивные данные, чтобы у нас было что запустить?

Просто попытался переустановить с помощью install_github ("Rdatatable / data.table", build_vignettes = FALSE), та же ошибка.

Однако перед этим я заметил, что мой сценарий резервного копирования, который использовал dplyr для решения некоторых других проблем data.table (байты fread и NUL), также столкнулся с той же ошибкой памяти при операции dplyr. Может быть, в моих данных действительно что-то изменилось, что я не могу точно определить, или, думаю, с R 3.5.0. Или это связано с объектом таблицы данных, уже находящимся в памяти ..

Сложно воспроизвести, данные конфиденциальны. Но попробую, как только у меня будет еще немного времени.

@mattdowle Я запустил memtest для Windows и получил следующее (Windows использует только gc() меры, а не ps ). По крайней мере, что-то, что объясняет достижение лимита в 2 ГБ, а также подтверждает ряд тестов, когда проблема начинает возникать. Вы можете воспроизвести себя на w1 .

# x64 win r-devel
data.table::fread("wget -q https://github.com/Rdatatable/data.table/files/1995905/memtest.csv.zip && unzip -cq memtest.csv.zip"
  )[, last_GC_used := data.table::shift(GC_used)
    ][, GC_used_diff := GC_used-last_GC_used
      ][order(-GC_used_diff), head(.SD, 10), .SDcols=c("test", "GC_used", "GC_used_diff")]
#        test GC_used GC_used_diff
#       <num>   <num>        <num>
# 1: 1848.000  7875.9        441.8
# 2: 1835.000  7405.1        316.2
# 3: 1739.400  6581.1         58.6
# 4: 1739.100  6519.8         49.6
# 5: 1158.000   100.3         48.5
# 6: 1750.800  6668.4         37.4
# 7: 1549.000  2670.7         35.4
# 8: 1542.000  2597.2         35.1
# 9: 1642.001  3661.0         33.8
#10: 1779.800  6960.8         24.2

Итак, 1848 и 1835 годы, кажется, больше всего способствовали измерению GC_used . Наименьший номер теста, поэтому потенциально первый (в этой топ-10) - 1158, что вызывает проблемы, описанные в # 2854.

@HughParsonage, можете ли вы запустить memtest на своем R-devel, чтобы подтвердить указанные ниже цифры? просто установите env var TEST_DATA_TABLE_MEMTEST=TRUE и вызовите test.data.table . Имейте в виду, что один запуск занял ~ 50 минут. Игнорируйте предупреждения ps -o в выводе (я надеюсь, что они не остановят тесты, возможно, я уже исправил это в моей ветке разработки).

Windows R В разработке (нестабильная) (2018-05-05 r74699)

i386

memtest.csv.zip
memtest

x64

memtest.csv.zip
memtest

Windows R версии 3.5.0 (23.04.2018)

i386

memtest.csv.zip
memtest

x64

memtest.csv.zip
memtest

Linux R версии 3.4.4 (15 марта 2018 г.)

memtest.csv.zip
memtest

R dev r74708 Windows 64 бит

data.table 1.11.3 2018-05-11 01:26:09 UTC

memtest.csv.txt

Кажется, что это очень быстро на вашем компьютере, но также подтверждает использование памяти.

tail(data.table::fread("https://github.com/Rdatatable/data.table/files/1996044/memtest.csv.txt"), 3)
#     inittime   filename  timestamp   test PS_rss GC_used GC_gc_trigger   GC_max_used
#1: 1526054564 tests.Rraw 1526054785 1894.2     NA  8129.3        8185.1         179.2
#2: 1526054564 tests.Rraw 1526054785 1894.3     NA  8130.1        8185.9         179.2
#3: 1526054564 tests.Rraw 1526054785 1894.4     NA  8130.9        8186.7         179.2

Я сделал что-то не так? Это ноутбук 5-летней давности, который стоит около 500 долларов ...

Не уверен. 50 минут на моей машине были на самом деле проверкой R CMD и установкой некоторых deps из источника, а не только test.data.table. Тесты и примеры для i386 и x64. Сколько у вас оперативной памяти?

8 ГБ

Просто удалось запустить версию сценария, упомянутую в моем сообщении выше, но с большим набором данных на правильном сервере с ОЗУ 120 ГБ, и он работал, используя 80 ГБ памяти на пике. Использование версии datatable R 3.5.0 и CRAN (сервер для конфиденциальных данных, поэтому не разрешено устанавливать более новую версию).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги