Проблема сборки PAPyRUS под OpenBSD 6.2

  • olegus 12.10.2023
    Системный язык C? У меня на всех из семейства UNIX(FreeBSD 10.x), LINUX которые я пробовал всегда было RU или EN(US), но такое!?
    papyrus(66563) in free(): bogus pointer (double free?) 0x7bff62c8
    Abort trap (core dumped)

    Конечно, это нарушение правил, но тут описывается почти такая же проблема, но с другим языком: https://github.com/python-ldap/python-ldap/issues/305
    Там же внизу ссылка на список fix'ов OpenBSD.
    То есть, проблема в системе может быть.
    И на "bogus pointer (double free)" чаще всего жалуются на OpenBSD 5.x, 6.x.
    Кстати, спасибо за конфиги раскладки опенки, может пригодится.
  • AkhmedSatajaAkhmedSataja 12.10.2023
    Насколько я понял, есть патч только для OpenBSD 6.6, а вот под 6.2 нету.
    Надо понять, можно ли применять патчи, написанные под 6.6 под 6.2. Думаю, нет. Либо я плохо искал по той ссылке, что Вы дали.
  • olegus 13.10.2023
    А вот не факт что этот проект француза даже с патчем будет работать... Может опять пойдет по кругам ада.
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Не, дело не в системе, чему я несказнно рад. Он запустился, когда я указал значение переменной окружения PAPYRUS_DIR=/home/Sataja/Downloads/Papyrus1.1.1/, а то он пытался, по всей видимости, использовать файл на защищенной от записи простым пользователем директории /usr/local/lib/Papyrus, как написано в файле env.c:
    #include <stdlib.h>
    
    #include "env.h"
    #include "../kernel/globals.h"
    
    char *papyrus_dir;
    
    /*
     *----------------------------------------------------------------------
     *
     * Get_Environment --
     *
     *      This function is invoked to set several environment variables
     *      used by PAPyRUS.
     *
     * Results:
     *      None.
     *
     * Side effects:
     *      The variable declared in 'env.h' are updated.
     *
     *----------------------------------------------------------------------
     */
    
    void
    Get_Environment(void) {
      
      papyrus_dir = getenv("PAPYRUS_DIR");
      if( papyrus_dir == NULL )
        papyrus_dir = strdup("/usr/local/lib/Papyrus");
    }

    Это нашлось путем добавления n-ого количества printf() перед каждой функцией, что полная дичь, знаю, но с отладчиком я еще не научился работать. Но, зато, теперь другая ошибка: при попытке открыть и ли создать новый фал выдает:

    Error: "Normal" style not found, check if the init files aren't corrupted.

    Вывод програмы:
    $ ./bin/papyrus                                                                
    Init:0.1
    Init:0.2
    Init:0.3
    Init:0.4
    Init:0.5
    Init:0.6
    Init:0.7
    Init:0.8
    ..Init:0.1
    ..Init:0.2
    ..Init:0.3
    ..Init:0.4
    ..Init:0.5
    ..Init:0.6
    ..Init:0.7
    ..Init:0.8
    ..Init:0.9
    ..Init:0.10
    ..Init:0.11
    Init:0.9
    Init:0.10
    Init:0.11
    Init:1.1
    Init:1.2
    Init:1.3
    Init:1.4
    Init:1.5
    Init:1.6
    Init:1.7
    Init:1.8
    Init:1.9
    Init:1.10
    Init:1.11
    Init:1.12
    TInit:0.1
    TInit:0.2
    TInit:0.3
    TInit:0.4
    TInit:0.5
    TInit:0.6
    TInit:0.7
    TInit:0.8
    TInit:0.9
    TInit:0.10
    TInit:0.11
    TInit:0.12
    TInit:0.13
    ..TCLInit..0.0
    ..TCLInit..0.1
    ..TCLInit..0.2
    ..TCLInit..0.3
    ..TCLInit..0.4
    ....[0]={??};
    ....[1]={??};
    ....[2]={??};
    ....[3]={??};
    ....[4]={??};
    ....[5]={??};
    ....[6]={??};
    ....[7]={??};
    ....[8]={??};
    ....[9]={??};
    ....[10]={??};
    ....[11]={??};
    ....[12]={??};
    ....[13]={??};
    ....[14]={??};
    ....[15]={??};
    ....[16]={??};
    ....[17]={??};
    ....[18]={??};
    ....[19]={??};
    ....[20]={??};
    ....[21]={??};
    ....[22]={??};
    ....[23]={??};
    ....[24]={??};
    ....[25]={??};
    ....[26]={??};
    ....[27]={??};
    ....[28]={??};
    ....[29]={??};
    ....[30]={??};
    ....[31]={??};
    ....[32]={??};
    ....[33]={??};
    ....[34]={??};
    ....[35]={??};
    ....[36]={??};
    ....[37]={??};
    ..TCLInit..0.5
    ..TCLInit..0.6
    ..TCLInit..0.6..{/home/Sataja/Downloads/Papyrus1.1.1//scripts/papyrus-init.tcl};..TCLInit..0.7
    You're FCKED
    TInit:0.14
    TInit:0.15
    TInit:0.16
    TInit:0.17
    TInit:0.19
    TInit:0.20
    Init:1.13
    Init:1.14
    Init:1.15
    Init:1.16
    Init:1.17
    Init:1.18
    Init:0.19
    Init:0.-20
    Error: "Normal" style not found, check if the init files aren't corrupted.
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Эх, тяжела практическая некромантия.
  • olegus 13.10.2023
    Запустился? Теперь стили что-ли фиксить?
    Эх, жаль что C,C++ не интерпретируемые, ошибки бы быстрее выявлялись...
    Кстати, теперь в этот переписанный PAPyRUS, можно добавить by AkhmedSataja.
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Не, максимум, patched by AkhmedSataja, following the tips by olegus.;)
    Это еще если получиться это все поправить.

    Не знаю, мне C/C++ ближе, да проги на них вроде быстрее, чем на том же python, что в моем случае критично. Хотя, благо, что Carlos NUNES, кто создал этот PAPyRUS, не на асме писал. Вот уж где проще было бы сразу оставить это дело.
  • AkhmedSatajaAkhmedSataja 13.10.2023
    Так, я рано обрадовался, когда я прописал ему прямой путь до файлов, где лежат скрипты *.tcl, написанные еще автором, но на заведомо разрешенной для чтения/записи директории, он вновь вылетел с тем же "bogus pointer".
    Т.е. без загрузки скриптов PAPyRUS запускается, но не работает, а с загрузкой - даже не запускается.

    Есть вероятность, что эти скрипты, вернее синтаксис в его время был не таким, как сейчас, но мне, опять же, не хватает знаний. И это было бы самым оптимальным, но далеко не факт, что это так.
  • olegus 13.10.2023
    Решил ради прикола посмотреть, что если без TCL,Motif собрать PAPyRUS. Итог: он вообще кучу опций командной строки не знает. Это система на ядре Linux 6.1.42 (или же архитектура x64 делает своё дело)
    Просто OpenBSD никак с USB у меня не загружается(не может смонтировать USB, хотя FreeBSD, GhostBSD загружаются+ даже моя чудо WIFI карта подцепилась автоматически в Ghost), поэтому решил проверить на том что есть.
  • AkhmedSatajaAkhmedSataja 13.10.2023
    У меня OpenBSD работает с внешнего жесткого диска ATA через ATA-USB переходник. Диск запитан от дополнительного блока питания, от него-же - доп. вентилятор. Все равно со сдохшим инвертором матрицы подсветки от ноутбука, как от ноута толку мало, а на IDE'шном харде в Thinkpad'е стоит винда с кучей утилит для разных КПК, которых даже под Linux, увы, нет. Вот когда найду аналоги под опенок, скажем, записывателя программ в Pocket Viewer, вот тогда залью на хард OpenBSD. Так что вот такой вот, с позовления сказать, системный блок.

    olegus:
    Итог: он вообще кучу опций командной строки не знает.

    Так он же вроде под Linux изначально писался? Там даже в README есть же строчки:
    Bugs and remarks
    ----------------
    
    'PAPyRUS' was developped and tested under Linux, and X11R6. Otherwise,
    it's not bug-free. If you find one, send me a mail in order to
    eliminate it. Please send also the reason and the effects of the bug
    to make the correction more easily, and more quickly.

    Правда, не совсем ясно, как это коррелируется с этим:
    To compile and execute 'PAPyRUS' you need the following things:
    
    	- an Unix system (Sun OS, Solaris, IRIX, Linux) !!!
    но то ладно.

    Можете по подробнее про не знание опций сказать?