トップ «前の日記(2023-11-21) 最新 次の日記(2023-12-15)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2023-11-22 [長年日記]

_ [雑記]japanease/ktermの覚書

ports-CURRENTから外されてもしぶとくktermを使っているのだが…

FreeBSD 14.0-STABLE上でビルドしたものは、TERMCAP環境変数が壊れている? (www/firefox configure/build時にpythonでruntime errorになる)

少なくとも、13.2-STABLE上でビルドしたものと値が異なるというか、凄く短いので何か変

同様に、x11/xtermの挙動も異なって見えるので要調査(分類してみた)

terminal 13.2-STABLE 14.0-STABLE
xterm TERMCAP=xterm|... TERMCAP環境変数無し
kterm TERMCAP=kterm|... co#とli#エントリを含むTERMCAP環境変数だが、先頭5byteが起動毎に異なる

動作的には、stable/14系ではtermcapの検索に失敗し、xtermではTERMCAPを設定無し動作(深刻な副作用は出ない)、ktermでは独自のco#, li#エントリ追加時に正しく初期化されていないtermcap bufferを操作して、壊れたTERMCAP環境変数を設定している模様

コードを読んで状況が見えてきた…

  • co#li#エントリは、ktermのresize@main.cが追加している
    • resizeを含めtermcap編集コードは、termcap bufferの有効性を検査していない
  • stable/14系だとtgetent(3)が1を返して成功しても、bufferにtermcapが書き戻されない
  • spawn@main.c内のlocal scopeなtermcap, newtc bufferが初期化されていない
    • ifdef linuxなbzeroコードがあるが、当該環境では有効にならない
    • 起動毎にTERMCAP環境変数の先頭が異なる原因

多分、正しい修正は…

  • bufferを明示的に初期化する(bzeroは過剰で、先頭をNULL文字にするで十分のはず)
    • 未初期化の場合、その後の編集操作で最悪buffer overrunで上書き or SEGVする
  • termcap bufferが空文字列のときの処理を入れる
    • 編集しない (resize・strcat)
      • remove_termcap_entryは、自動的にNOPになる
    • TERMCAP環境変数を設定しない

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記