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

  • olegus 14.10.2023
    Странно как-то выглядит.
  • AkhmedSatajaAkhmedSataja 14.10.2023
    olegus:
    Странно как-то выглядит.
    Согласен. Вот думаю, и выдает bogus pointer при поптыке очистить двойной указатель. Надо почитать, как оный очистить грамотно.

    Я вот думаю, а работало ли это вообще когда-нибудь? Хотя должно же, ведь есть же http://www.ibiblio.org/pub/Linux/apps/wp/papyrus/papyrus-1.1.1.bin.ELF.tar.gz и фотка работы оного. Можно было бы на qemu поставить какой-нибудь redhat того времени, чтобы с motif был и потестить, как считаете?
  • olegus 14.10.2023
    Да,можно. Только систему то найдешь, а вот пакеты к ней или хотя бы windowmaker или CDE того времени. В инете нашел Slackware 1994 ; Redhat 1996-2000; FreeBSD 1993,1994,1999 ,2000,2001; Debian 1993,1995,2000. Так что выбор большой, но не мой не ваш ноутбук просто не поддерживает виртуализацию.
  • AkhmedSatajaAkhmedSataja 14.10.2023
    Мда, пытался на bochs поставить Sun Solaris - ни черта не вышло, тупит так, будто я не pentium в параметрах указал, а 386-й. Короче, придется либо хард мне искать свободный, и туда заливать старый RedHat с CDE, либо Solaris с CDE, но делать это ради одной программы - такое себе, либо все-таки допиливать напильником, надеясь, что других проблем не всплывет. Ага, сейчас.
  • AkhmedSatajaAkhmedSataja 14.10.2023
    Сейчас ищу, как очистить вот эту шляпу: char **argsPtr.
    Буду благодарен за совет.
  • AkhmedSatajaAkhmedSataja 14.10.2023
    Написал костыль. Не знаю, насколько верный.

    while(i<numArgs){
        char *arg;		/*vremennaja ukaz na odnom massiv*/
        arg = &*argsPtr[i];	/*peredajom adres na odmon massiv*/
        arg[0]='\0';	/*stavim nulevoj symbol v nachalo*/
        i++;		/*pribal'aem peremennuju*/
      };
      printf("....>GetFont..0.14\n");

    Теперь валиться с Segmentation fault (core dumped) после добавления последнего стиля. Лог программы:

    Script started on Sat Oct 14 21:22:04 2023
    
    $ ./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/lib/scripts/papyrus-init.tcl};..TCLInit..0.7
    TCL_INIT_0.0
    
    TCL_INIT_0.1
    TCL:Load_Style_Menus..0.0
    TCL:Load_Fonts..0.1
    TCL:Load_Font..0.2
    TCL:Load_Font..0.3
    TCL:Load_Font..0.4
    TCL:Load_Font..0.5
    TCL:Load_Font..Done
    TCL_INIT_0.2
    TCL:Load_Default_Styles..0.1
    TCL:Load_Default_Styles..0.2
    TCL:Load_Default_Styles..0.3
    TCL:Load_Default_Styles..0.4
    TCL:Load_Default_Styles..0.5
    TCL:Load_Default_Styles..0.6
    
    ....>AddStyle..started
    ....>AddStyle..variables..init..done
    ....>AddStyle..variables..load.done
    ....>AddStyle..for..cycle..starting
    ....>AddStyle..for[1]={
    ....>AddStyle..for[3]={
    ........f-font
    ....>AddStyle..for[5]={
    ........a-align
    ....>AddStyle..for[7]={
    ........m-margins
    ....>AddStyle..for[9]={
    ....>AddStyle..for..cycle..done
    ....>AddStyle..0.0
    ....>AddStyle..0.6
    ....>AddStyle..0.7
    ....>AddStyle..0.7
    ....>AddStyle..0.8
    ....>GetFont..0.1
    ....>GetFont..0.2
    ....>GetFont..0.3
    ....>GetFont..0.6
    ....>GetFont..0.7
    ....>GetFont..0.8
    ....>GetFont..0.9
    ....>GetFont..0.13
    ....>GetFont..0.14
    ....>AddStyle..0.9
    ....>AddStyle..0.10
    ....>AddStyle..0.11
    ....>AddStyle..0.13
    ....>AddStyle..0.14
    ....>AddStyle..0.15
    ....>AddStyle..0.16
    ....>AddStyle..0.17
    ....>AddStyle..0.18
    ....>AddStyle..0.19
    ....>AddStyle..0.20
    TCL:Load_Default_Styles..Add_Style..0.0
    
    ....>AddStyle..started
    ....>AddStyle..variables..init..done
    ....>AddStyle..variables..load.done
    ....>AddStyle..for..cycle..starting
    ....>AddStyle..for[1]={
    ....>AddStyle..for[3]={
    ........f-font
    ....>AddStyle..for[5]={
    ........a-align
    ....>AddStyle..for[7]={
    ........m-margins
    ....>AddStyle..for..cycle..done
    ....>AddStyle..0.0
    ....>AddStyle..0.6
    ....>AddStyle..0.7
    ....>AddStyle..0.7
    ....>AddStyle..0.8
    ....>GetFont..0.1
    ....>GetFont..0.2
    ....>GetFont..0.3
    ....>GetFont..0.6
    ....>GetFont..0.7
    ....>GetFont..0.8
    ....>GetFont..0.9
    ....>GetFont..0.13
    ....>GetFont..0.14
    ....>AddStyle..0.9
    ....>AddStyle..0.10
    ....>AddStyle..0.11
    ....>AddStyle..0.13
    ....>AddStyle..0.14
    ....>AddStyle..0.15
    ....>AddStyle..0.16
    ....>AddStyle..0.17
    ....>AddStyle..0.18
    ....>AddStyle..0.19
    ....>AddStyle..0.20
    TCL:Load_Default_Styles..Add_Style..0.1
    
    ....>AddStyle..started
    ....>AddStyle..variables..init..done
    ....>AddStyle..variables..load.done
    ....>AddStyle..for..cycle..starting
    ....>AddStyle..for[1]={
    ....>AddStyle..for[3]={
    ........f-font
    ....>AddStyle..for[5]={
    ....>AddStyle..for..cycle..done
    ....>AddStyle..0.0
    ....>AddStyle..0.1
    ....>AddStyle..0.2
    ....>AddStyle..0.5
    ....>AddStyle..0.6
    ....>AddStyle..0.7
    ....>AddStyle..0.7
    ....>AddStyle..0.8
    ....>GetFont..0.1
    ....>GetFont..0.2
    ....>GetFont..0.3
    ....>GetFont..0.6
    ....>GetFont..0.7
    ....>GetFont..0.8
    ....>GetFont..0.9
    ....>GetFont..0.13
    ....>GetFont..0.14
    ....>AddStyle..0.9
    ....>AddStyle..0.10
    ....>AddStyle..0.11
    ....>AddStyle..0.13
    ....>AddStyle..0.14
    ....>AddStyle..0.15
    ....>AddStyle..0.16
    ....>AddStyle..0.17
    ....>AddStyle..0.18
    ....>AddStyle..0.19
    ....>AddStyle..0.20
    TCL:Load_Default_Styles..Add_Style..0.2
    
    ....>AddStyle..started
    ....>AddStyle..variables..init..done
    ....>AddStyle..variables..load.done
    ....>AddStyle..for..cycle..starting
    ....>AddStyle..for[1]={
    ....>AddStyle..for[3]={
    ........f-font
    ....>AddStyle..for[5]={
    ....>AddStyle..for..cycle..done
    ....>AddStyle..0.0
    ....>AddStyle..0.1
    ....>AddStyle..0.2
    ....>AddStyle..0.5
    ....>AddStyle..0.6
    ....>AddStyle..0.7
    ....>AddStyle..0.7
    ....>AddStyle..0.8
    ....>GetFont..0.1
    ....>GetFont..0.2
    ....>GetFont..0.3
    ....>GetFont..0.6
    ....>GetFont..0.7
    ....>GetFont..0.8
    ....>GetFont..0.9
    ....>GetFont..0.13
    ....>GetFont..0.14
    ....>AddStyle..0.9
    ....>AddStyle..0.10
    ....>AddStyle..0.11
    ....>AddStyle..0.13
    ....>AddStyle..0.14
    ....>AddStyle..0.15
    ....>AddStyle..0.16
    ....>AddStyle..0.17
    ....>AddStyle..0.18
    ....>AddStyle..0.19
    ....>AddStyle..0.20
    TCL:Load_Default_Styles..Add_Style..0.3
    
    ....>AddStyle..started
    ....>AddStyle..variables..init..done
    ....>AddStyle..variables..load.done
    ....>AddStyle..for..cycle..starting
    ....>AddStyle..for[1]={
    ....>AddStyle..for[3]={
    ........f-font
    ....>AddStyle..for[5]={
    ....>AddStyle..for[7]={
    ....>AddStyle..for[9]={
    ....>AddStyle..for..cycle..done
    ....>AddStyle..0.0
    ....>AddStyle..0.1
    ....>AddStyle..0.2
    ....>AddStyle..0.5
    ....>AddStyle..0.6
    ....>AddStyle..0.7
    ....>AddStyle..0.7
    ....>AddStyle..0.8
    ....>GetFont..0.1
    ....>GetFont..0.2
    ....>GetFont..0.3
    ....>GetFont..0.6
    ....>GetFont..0.7
    ....>GetFont..0.8
    ....>GetFont..0.9
    ....>GetFont..0.13
    ....>GetFont..0.14
    ....>AddStyle..0.9
    ....>AddStyle..0.10
    ....>AddStyle..0.11
    ....>AddStyle..0.13
    ....>AddStyle..0.14
    ....>AddStyle..0.15
    ....>AddStyle..0.16
    ....>AddStyle..0.17
    ....>AddStyle..0.18
    ....>AddStyle..0.19
    ....>AddStyle..0.20
    TCL:Load_Default_Styles..Add_Style..0.4
    
    ....>AddStyle..started
    ....>AddStyle..variables..init..done
    ....>AddStyle..variables..load.done
    ....>AddStyle..for..cycle..starting
    ....>AddStyle..for[1]={
    ....>AddStyle..for[3]={
    ....>AddStyle..for[5]={
    ........m-margins
    ....>AddStyle..for[7]={
    ....>AddStyle..for[9]={
    ....>AddStyle..for[11]={
    ....>AddStyle..for..cycle..done
    ....>AddStyle..0.0
    ....>AddStyle..0.1
    ....>AddStyle..0.2
    ....>AddStyle..0.5
    ....>AddStyle..0.6
    ....>AddStyle..0.7
    ....>AddStyle..0.7
    ....>AddStyle..0.8
    ....>AddStyle..0.9
    ....>AddStyle..0.10
    ....>AddStyle..0.11
    ....>AddStyle..0.12
    Segmentation fault (core dumped) 
    $ exit
    
    Script done on Sat Oct 14 21:22:08 2023

    Столь жутко он выглядит, так как все "....>BLA_BLA" уже я дописал, чтобы понимать, где ошибка.
  • AkhmedSatajaAkhmedSataja 14.10.2023
    Другой вариант очистки также не помогает:

    while(i<numArgs){
        argsPtr[i][0]='\0';	
        i++;		
      };

    Ровно, как и цикл for.
    Из чего я делаю вывод, что либо я очень криворук, либо ошибка где-то еще. Хотя, криворуковсть никуда не девается.
  • AkhmedSatajaAkhmedSataja 15.10.2023
    Методом тыка выяснил, что проблема вот здесь:
    if( tag != 0 ) {
        if( Tcl_GetInt(interp, argv[tag], &tag) != TCL_OK )
          return TCL_ERROR;
        si->set_attr(STYLE_TAG, (void *)tag);
      }

    Без этого: " si->set_attr(STYLE_TAG, (void *)tag);" PAPyRUS запускается, но вылетает при попытке создать документ, либо открыть его, ибо вероятно, не прогружает аттрибуты стиля (?).
  • olegus 15.10.2023
    Не побоюсь этого слова, один геморрой.
  • AkhmedSatajaAkhmedSataja 15.10.2023
    Да, это выше моего уровня знаний. Причем на порядок.