Вопрос или проблема
Не знаю, почему, но по какой-то причине никто, включая root, не может получить доступ к /usr/local/lib/libnvidia-glcore.so.
Я использую HardenedBSD 14.1-STABLE-HBSD. Я использую драйвер Nvidia 390.154_1. Моя видеокарта – GeForce GTX 460. Все мое программное обеспечение на данный момент поступает из репозиториев пакетов, за исключением OBS, одно из программ, которое вызывает сегментационную ошибку.
Если вам нужна дополнительная информация, дайте знать.
Ошибка (через gdb) всегда выглядит примерно так:
Недопустимые права доступа к отображаемому объекту.
0x000000080608b220 in ?? () from /usr/local/lib/libnvidia-glcore.so.1
Стандартный пользователь или root. Всегда происходит сегментационная ошибка. И когда я в это вникаю, всегда оказывается, что проблема в этой конкретной библиотеке.
Я просмотрел список настроек sysctl на случай, если что-то было включено или отключено, что может вызывать это. Ничего не бросилось в глаза:
hw.nvidia.gpus.0.type: PCIe
hw.nvidia.gpus.0.irq: 102
hw.nvidia.gpus.0.model: GeForce GTX 460
hw.nvidia.registry.dwords:
hw.nvidia.registry.RmProfilingAdminOnly: 1
hw.nvidia.registry.EnableIBMNPURelaxedOrderingMode: 0
hw.nvidia.registry.EnableUserNUMAManagement: 1
hw.nvidia.registry.EnableBacklightHandler: 0
hw.nvidia.registry.EnableStreamMemOPs: 0
hw.nvidia.registry.UseThreadedInterrupts: 1
hw.nvidia.registry.TCEBypassMode: 0
hw.nvidia.registry.IgnoreMMIOCheck: 0
hw.nvidia.registry.VMallocHeapMaxSize: 0
hw.nvidia.registry.KMallocHeapMaxSize: 0
hw.nvidia.registry.MemoryPoolSize: 0
hw.nvidia.registry.EnablePCIeGen3: 0
hw.nvidia.registry.CheckPCIConfigSpace: 4294967295
hw.nvidia.registry.RegisterForACPIEvents: 1
hw.nvidia.registry.MapRegistersEarly: 0
hw.nvidia.registry.EnableMSI: 1
hw.nvidia.registry.UsePageAttributeTable: 4294967295
hw.nvidia.registry.InitializeSystemMemoryAllocations: 1
hw.nvidia.registry.UpdateMemoryTypes: 4294967295
hw.nvidia.registry.DeviceFileMode: 438
hw.nvidia.registry.DeviceFileGID: 0
hw.nvidia.registry.DeviceFileUID: 0
hw.nvidia.registry.ModifyDeviceFiles: 1
hw.nvidia.registry.RmLogonRC: 1
hw.nvidia.registry.ResmanDebugLevel: 4294967295
hw.nvidia.registry.Mobile: 4294967295
hw.nvidia.version: NVIDIA UNIX x86_64 Kernel Module 390.154 Wed Jun 22 04:50:54 UTC 2022
hardening.kmalloc_zero: 0
hardening.prohibit_ptrace_capsicum: 2
hardening.prohibit_ptrace_syscall: 1
hardening.harden_shm: 2
hardening.harden_tty: 1
hardening.harden_rtld: 1
hardening.insecure_kmod: 0
hardening.procfs_harden: 1
hardening.log.ulog: 0
hardening.log.log: 1
hardening.version: 1400007
hardening.control.extattr.status: 1
hardening.control.acl.status: 1
hardening.pax.segvguard.max_crashes: 5
hardening.pax.segvguard.suspend_timeout: 600
hardening.pax.segvguard.expiry_timeout: 120
hardening.pax.segvguard.status: 2
hardening.pax.mprotect.status: 2
hardening.pax.pageexec.status: 1
hardening.pax.kmod_load_disable: 0
hardening.pax.tpe.user_owned: 0
hardening.pax.tpe.root_owned: 1
hardening.pax.tpe.all: 0
hardening.pax.tpe.negate: 0
hardening.pax.tpe.gid: 0
hardening.pax.tpe.status: 1
hardening.pax.disallow_map32bit.status: 2
hardening.pax.aslr.status: 1
hardening.pax.prohibit_new_usb: 0
security.mac.mmap_revocation_via_cow: 0
security.mac.mmap_revocation: 1
security.mac.labeled: 0
security.mac.max_slots: 4
security.mac.version: 5
security.bsd.stack_guard_page: 1
security.bsd.unprivileged_get_quota: 0
security.bsd.allow_read_dir: 0
security.bsd.hardlink_check_gid: 1
security.bsd.hardlink_check_uid: 1
security.bsd.unprivileged_chroot: 0
security.bsd.unprivileged_idprio: 0
security.bsd.allow_ptrace: 0
security.bsd.unprivileged_proc_debug: 0
security.bsd.conservative_signals: 1
security.bsd.see_jail_proc: 0
security.bsd.see_other_gids: 0
security.bsd.see_other_uids: 0
security.bsd.unprivileged_read_msgbuf: 0
security.bsd.unprivileged_mlock: 1
security.bsd.suser_enabled: 1
security.jail.mount_fdescfs_allowed: 0
security.jail.mount_zfs_allowed: 0
security.jail.mount_fusefs_allowed: 0
security.jail.mount_tmpfs_allowed: 0
security.jail.mount_procfs_allowed: 0
security.jail.mount_devfs_allowed: 0
security.jail.vmm_allowed: 0
security.jail.param.zfs.mount_snapshot: 0
security.jail.param.zfs.: 0
security.jail.param.sysvshm.: 0
security.jail.param.sysvsem.: 0
security.jail.param.sysvmsg.: 0
security.jail.param.allow.vmm: 0
security.jail.param.allow.mount.fdescfs: 0
security.jail.param.allow.mount.zfs: 0
security.jail.param.allow.mount.fusefs: 0
security.jail.param.allow.mount.tmpfs: 0
security.jail.param.allow.mount.procfs: 0
security.jail.param.allow.mount.devfs: 0
security.jail.param.allow.mount.: 0
security.jail.param.allow.nfsd: 0
security.jail.param.allow.suser: 0
security.jail.param.allow.extattr: 0
security.jail.param.allow.unprivileged_proc_debug: 0
security.jail.param.allow.read_msgbuf: 0
security.jail.param.allow.reserved_ports: 0
security.jail.param.allow.mlock: 0
security.jail.param.allow.socket_af: 0
security.jail.param.allow.quotas: 0
security.jail.param.allow.chflags: 0
security.jail.param.allow.raw_sockets: 0
security.jail.param.allow.sysvipc: 0
security.jail.param.allow.set_hostname: 0
security.jail.param.ip6.saddrsel: 0
security.jail.param.ip6.: 0
security.jail.param.ip4.saddrsel: 0
security.jail.param.ip4.: 0
security.jail.param.cpuset.id: 0
security.jail.param.host.hostid: 0
security.jail.param.host.hostuuid: 64
security.jail.param.host.domainname: 256
security.jail.param.host.hostname: 256
security.jail.param.host.: 0
security.jail.param.children.max: 0
security.jail.param.children.cur: 0
security.jail.param.dying: 0
security.jail.param.vnet: 0
security.jail.param.persist: 0
security.jail.param.devfs_ruleset: 0
security.jail.param.enforce_statfs: 0
security.jail.param.osrelease: 32
security.jail.param.osreldate: 0
security.jail.param.securelevel: 0
security.jail.param.path: 1024
security.jail.param.name: 256
security.jail.param.parent: 0
security.jail.param.jid: 0
security.jail.param.hardening.prohibit_ptrace_capsicum: 0
security.jail.param.hardening.harden_shm: 0
security.jail.param.hardening.harden_tty: 0
security.jail.param.hardening.harden_rtld: 0
security.jail.param.hardening.log.ulog: 0
security.jail.param.hardening.log.log: 0
security.jail.param.hardening.pax.segvguard.status: 0
security.jail.param.hardening.pax.mprotect.status: 0
security.jail.param.hardening.pax.pageexec.status: 0
security.jail.param.hardening.pax.disallow_map32bit.status: 0
security.jail.param.hardening.pax.aslr.status: 0
security.jail.devfs_ruleset: 0
security.jail.enforce_statfs: 2
security.jail.mlock_allowed: 0
security.jail.mount_allowed: 0
security.jail.chflags_allowed: 0
security.jail.allow_raw_sockets: 0
security.jail.sysvipc_allowed: 0
security.jail.socket_unixiproute_only: 1
security.jail.set_hostname_allowed: 1
security.jail.jail_max_af_ips: 255
security.jail.vnet: 0
security.jail.jailed: 0
Хотя, возможно, я что-то упустил.
Список был усечен как по времени, так и по соображениям безопасности. Если есть параметр, который вы хотели бы, чтобы я исследовал и который не включен здесь, дайте знать.
Я изменил множество переменных sysctl и часами искал в интернете. Никто, похоже, не сталкивался с моей проблемой.
Читая некоторую старую документацию, кажется, что “/usr/lib/xorg” должна существовать. Однако на моей системе она отсутствует. Я не уверен, связано ли это, и XOrg, похоже, работает нормально, но я решил упомянуть это на всякий случай.
Ответ или решение
Проблема, с которой вы сталкиваетесь, связана с библиотекой libnvidia-glcore.so.1
, и заключается в том, что у нее неправильные права доступа, что вызывает сбой (segfault) при попытке её использования, как для пользователей, так и для суперпользователя.
Вот шаги, которые помогут вам решить эту проблему:
-
Проверка прав доступа к библиотеке:
Начнем с проверки текущих прав доступа кlibnvidia-glcore.so.1
. Вы можете сделать это, выполнив следующую команду в терминале:ls -l /usr/local/lib/libnvidia-glcore.so.1
Обратите внимание на строки, начинающиеся с
-rwxr-xr-x
. Это стандартные права доступа для файлов библиотеки (доступ на чтение и исполнение для всех пользователей). -
Изменение прав доступа:
Если права доступа не соответствуют этим стандартам, вы можете их изменить с помощью команды:sudo chmod 755 /usr/local/lib/libnvidia-glcore.so.1
Эта команда даст всем пользователям разрешения на чтение и выполнение.
-
Проверка владельца и группы:
Далее, проверьте, кто является владельцем файла и к какой группе он принадлежит. В идеале, если библиотека была установлена через пакетный менеджер, она должна принадлежать пользователюroot
и группеwheel
(или аналогичной):chown root:wheel /usr/local/lib/libnvidia-glcore.so.1
-
Обновление системы и драйверов:
Убедитесь, что ваша система и драйверы обновлены до последних стабильных версий. Вы можете выполнить это с помощью команд:sudo pkg update sudo pkg upgrade
Это может помочь устранить конфликты и совместимость.
-
Проверка системных настроек безопасности:
У вас есть активированные параметры защита системы в HardenedBSD, которые могут блокировать доступ к некоторым библиотекам. Постепенно отключите некоторые параметры безопасности для тестирования, например:sysctl hardening.harden_shm=0 sysctl hardening.harden_rtld=0
Если это решает проблему, вы можете скорректировать настройки или оставить их отключенными в рамках ваших потребностей.
-
Проверка зависимостей:
Убедитесь, что все зависимости этой библиотеки установлены корректно, а также нет конфликтов между версиями. -
Логи и отладка:
Проверьте системные журналы на наличие ошибок, касающихся драйвера NVIDIA или библиотек. Журналы можно просмотреть, используя команду:dmesg | grep nvidia
Это может дать подсказки о возможных проблемах.
Если после выполнения всех этих шагов проблема не будет решена, возможно, стоит попробовать переустановить драйвер NVIDIA полностью. Убедитесь, что вы сохраняете все настройки и конфигурации перед этим.
Если у вас будут дополнительно вопросы или если потребуется еще какая-либо помощь, не стесняйтесь обращаться.