LINUX.ORG.RU

Сообщения userd

 

gdm autologin неправильная разблокировка

Я использую Arch Linux, GNOME 3, GDM и autologin. Если заблокировать и разблокировать GNOME 3, выводится предложение ввести пароль для текущего пользователя. Однако рядом с полем ввода пароля есть опция «Log in as another user». После нажатия на нее разблокируется шелл GNOME 3 заблокированного пользователя без ввода пароля.
Я хочу, чтобы никто не мог разблокировать мой GNOME 3 без ввода пароля
Весь диск, включая /boot зашифрован. Autologin настроен в /etc/gdm/custom.conf:

[daemon]
# Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false
AutomaticLogin=gregory
AutomaticLoginEnable=True
gregory единственный пользователь который может использовать GNOME 3 на моем ПК. В systemctl status gdm:
Sep 07 22:38:17 skynet gdm-autologin][1766]: gkr-pam: no password is available for user
logout в меню gnome 3 тоже не работает, выкидывает на черный экран с «starting systemd 2??»

 , , ,

userd
()

Обработка сишных ошибок в C++

Как принято работать с кодами ошибок C API в C++?
У меня есть такой код, но по нему несколько вопросов

//R — тип результата функции которая может вернуть ошибку
template<typename R>
class is_minus_one{
public:
  bool operator()(const R& val){
    return val == -1;
  }
};

//FailPolicy — функтор для проверки является ли результат выполнения функции ошибкой
template<template<class> typename FailPolicy>
class ExceptionWrapper{
public:
  template<typename R, typename... ArgsT>
  static auto wrap(R (*func)(ArgsT...)){
    return [func](ArgsT... args){
      FailPolicy<R> isFail;
      R res = func(args...);
      if(!isFail(res))
	return res;
      else {
	throw std::system_error(errno, std::system_category());
      }
    };
  }
};
using std_ex = ExceptionWrapper<is_minus_one>;
#define EX_WRAP(func) const static auto ex_##func = std_ex::wrap(func)

//Использование
EX_WRAP(epoll_create1);
EX_WRAP(close);
EX_WRAP(epoll_wait);
EX_WRAP(epoll_ctl);

  • Как избежать копирования аргументов?
  • Как сделать, чтобы такие обертки работали для функций с переменным количеством аргументов (fcntl, ioctl)?
  • Каковы накладные расходы использования исключений вместо кодов ошибок?
  • Правильно ли я понимаю, что при ошибке в POSIX всегда возвращается именно -1?
  • Есть ли смысл переписать код, заменив шаблоны на макросы?
  • Файл с обертками нужно будет подключать во все места где они используются. Может ли это стать причиной медленной компиляции, и как с этим бороться?

Наверняка есть более адекватные способы для обработки кодов ошибок в C++, но нагуглить их сходу не удается.

 ,

userd
()

JBullet не собирается

Сборка JBullet при помощи Ant заканчивается ошибкой:

...
instrument-classes:

BUILD FAILED
/home/gregory/Документы/programming/jbullet-20101010/build.xml:77: java.lang.IllegalStateException: first parameter of Stack.alloc(Class) must be constant (in class com.bulletphysics.collision.dispatch.ConvexConcaveCollisionAlgorithm, method processCollision)
	at cz.advel.stack.instrument.InstrumentMethod.logError(InstrumentMethod.java:413)
	at cz.advel.stack.instrument.InstrumentMethod.visitEnd(InstrumentMethod.java:121)
	at org.objectweb.asm.ClassReader.accept(Unknown Source)
	at org.objectweb.asm.ClassReader.accept(Unknown Source)
	at cz.advel.stack.instrument.Instrumenter.process(Instrumenter.java:119)
	at cz.advel.stack.instrument.InstrumentationTask.execute(InstrumentationTask.java:123)
	at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
	at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
	at org.apache.tools.ant.Task.perform(Task.java:348)
	at org.apache.tools.ant.Target.execute(Target.java:435)

...
Проблема в библиотеке JStackAlloc, которая была нужна в 2010 для быстрого выделения множества обьектов на стеке.
Мне нужно каким-то образом заставить JBullet собиратся с этой библиотекой(плохой вариант). Или заменить все Stack.alloc(x.class) на new x() и собрать без JStackAlloc. Это хороший вариант, потому что я не знаю, как эта устаревшая и ноне не нужная библиотека(ибо есть escape analysis) поведет себя на современных jvm.
Что посоветуете?

 ,

userd
()

RSS подписка на новые темы