Valgrind / R не работает: «Неустранимая ошибка: невозможно создать R_TempDir» - PullRequest
0 голосов
/ 19 ноября 2018

Прежде всего, я не очень разбираюсь в подобных вещах, поэтому я могу написать глупый вопрос, пожалуйста, будьте добры; -)

У меня есть R-код, который вызывает код C ++. К сожалению, есть проблема с моим кодом, возможно, память не отображена, и я хотел бы использовать valgrind, чтобы попытаться понять, где ошибка.

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

R -d valgrind

Я получаю этот вывод

==69495== Memcheck, a memory error detector
==69495== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==69495== Using Valgrind-3.14.0.GIT and LibVEX; rerun with -h for copyright info
==69495== Command: /Library/Frameworks/R.framework/Resources/bin/exec/R
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101472F31: ccaes_vng_ctr_crypt (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476D88: bcc_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476E2C: df_bcc_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476A15: df (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476631: nistctr_init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x10147607B: init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623C9E: arc4_init (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623B59: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101472F31: ccaes_vng_ctr_crypt (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476D88: bcc_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476EBC: df_bcc_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476A15: df (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476631: nistctr_init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x10147607B: init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623C9E: arc4_init (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623B59: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101472F31: ccaes_vng_ctr_crypt (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476D88: bcc_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476A6E: df (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476631: nistctr_init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x10147607B: init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623C9E: arc4_init (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623B59: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101472F31: ccaes_vng_ctr_crypt (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476B30: df (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476631: nistctr_init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x10147607B: init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623C9E: arc4_init (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623B59: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101476CBC: drbg_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x1014766AA: nistctr_init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x10147607B: init (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623C9E: arc4_init (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623B59: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101472F31: ccaes_vng_ctr_crypt (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x10147621E: generate (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623B92: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101472F31: ccaes_vng_ctr_crypt (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476C3F: drbg_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476269: generate (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623B92: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101476C5C: drbg_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476269: generate (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623B92: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101476CBC: drbg_update (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101476269: generate (in /usr/lib/system/libcorecrypto.dylib)
==69495==    by 0x101623B92: arc4random (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x101623F7D: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x101623F86: arc4random_uniform (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163E765: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Use of uninitialised value of size 8
==69495==    at 0x10163E768: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
==69495== Conditional jump or move depends on uninitialised value(s)
==69495==    at 0x10163E8BD: find_temp_path (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x10163EABF: mkdtemp (in /usr/lib/system/libsystem_c.dylib)
==69495==    by 0x1002418CE: R_reInitTempDir (sysutils.c:1662)
==69495==    by 0x1001B29AE: setup_Rmainloop (main.c:841)
==69495==    by 0x1001B3558: Rf_mainloop (main.c:1088)
==69495==    by 0x100000F5A: main (in /Library/Frameworks/R.framework/Resources/bin/exec/R)
==69495==
--69495-- WARNING: unhandled amd64-darwin syscall: unix:475
--69495-- You may be able to write your own handler.
--69495-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
--69495-- Nevertheless we consider this a bug.  Please report
--69495-- it at http://valgrind.org/support/bug_reports.html.
Fatal error: cannot create 'R_TempDir'
==69495==
==69495== HEAP SUMMARY:
==69495==     in use at exit: 189,122 bytes in 408 blocks
==69495==   total heap usage: 530 allocs, 122 frees, 504,429 bytes allocated
==69495==
==69495== LEAK SUMMARY:
==69495==    definitely lost: 1,664 bytes in 26 blocks
==69495==    indirectly lost: 0 bytes in 0 blocks
==69495==      possibly lost: 456 bytes in 10 blocks
==69495==    still reachable: 130,172 bytes in 237 blocks
==69495==         suppressed: 56,830 bytes in 135 blocks
==69495== Rerun with --leak-check=full to see details of leaked memory
==69495==
==69495== For counts of detected and suppressed errors, rerun with: -v
==69495== Use --track-origins=yes to see where uninitialised values come from
==69495== ERROR SUMMARY: 30 errors from 12 contexts (suppressed: 1 from 1)

и R тогда не загружается. Я не знаю, как это решить. Я знаю, что ошибка «Неустранимая ошибка: невозможно создать R_TempDir» может означать, что на жестком диске больше нет места, но это не так.

Я на MacBook Pro, с High Sierra и R 3.5.0

1 Ответ

0 голосов
/ 20 ноября 2018

Valgrind выдает сообщение об ошибке, сообщающее, что системный вызов unix: 475 не обрабатывается.

В таком случае он сообщает гостевому приложению, что системный вызов не выполнен, с ошибкой ENOSYS.

Системный вызов 475 для Дарвина - системный вызов Макдирата. Я предполагаю, что когда этот системный вызов потерпит неудачу, Затем R сообщает о фатальной ошибке, что не может создать R_Tempdir.

Как указано в сообщении об ошибке, вы должны отправить сообщение об ошибке в valgrind bugzilla.

Вы также можете попытаться исправить это: это может быть тривиальное изменение в файле valgrind m_syswrap / priv_syswrap-darwin.h, чтобы сделать что-то похожее, например, на линия прочитайте ссылку на несколько строк выше.

...