This was already solved in the alpha.tst you were using now. The default promoChar in Shatranj is now not 'f', but PieceToChar(blackFerz), which should always work no matter what PieceToCharTable you defined.
I think I fixed the problem. It occurred in a place where I had to make changes before, in connection with problems with Crazyhouse on an ICS. The problem is that the ICS sends you the board position, without telling what game it is. To get the variant you have to ask for a move list, (the board+move that come in might be from a game you are observing, starting in the middle), which it does only after it becomes clear that the board+move are from a new game. So I had to prevent initializing the variant from setting up the the initial position in the first position of the game history, in case the board sent before was a nonstandard initial position of a wild game. So I skipped InitPosition if the board send was the first position of a game.
But this does also skip assigning the PieceToCharTable. In Crazyhouse that is not too noticible, but in Shatranj it is fatal.
I solved it by saving the board that was just recieved, always do InitPosition, setting up the opening board, and then copying the received board back, just in case InitPosition has overwritten it.
Please try the alpha.tst that I posted now, to see if the problem persists. Take note of how the pieces look (board size "middling" or "bulky"!) The Alfils should look like Elephants, not like Bishops!
Perhaps you could also try if you can observe already started Crazyhouse and Shatranj games.