View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0030377 | Open CASCADE | OCCT:DRAW | public | 2018-11-16 07:30 | 2019-01-12 14:34 |
Reporter | Assigned To | bugmaster | |||
Priority | normal | Severity | minor | ||
Status | closed | Resolution | fixed | ||
OS | Windows | ||||
Product Version | 7.3.0 | ||||
Target Version | 7.4.0 | Fixed in Version | 7.4.0 | ||
Summary | 0030377: DRAW, Windows - command executed via option -c fails on puts | ||||
Description | If some command or script executed using DRAW command line option -c contains puts command, it fails on Windows with a message > can not find channel named "stdout" In particular, this happens with command testgrid since it uses puts. The reason is that Tcl creates separate instances of channels for standard streams (stdin, stdout, stderr) for each execution thread. Draw_Interpretor is initialized (during call to ReadInitFile()) for work in separate thread (created by Run_Appli() in Draw_Window.cxx) and contains channels that are created for that thread. When command given with -c option is evaluated from the main thread, Tcl does not find stdout instanced for that thread among the channels registered in the interpretor, so it fails. To correct this, the command given by -c option should be executed in the appropriate thread (one of tkLoop). | ||||
Steps To Reproduce | Modify draw.bat to add "-c puts AAA" or "-c testgrid demo draw" as arguments to DRAWEXE, when run it | ||||
Tags | No tags attached. | ||||
Test case number | Not needed | ||||
|
It is discovered that when OCCT is built with ActiveState build of Tcl (configuration used in Jenkins tests), option -c works well on master. Note that ActiveTcl behavior seems to be different from that of plain Tcl also for memory, see 0029996:0078253 |
|
Built tcl draw.bat @echo off rem Setup environment and launch DRAWEXE call "%~dp0env.bat" %1 %2 %3 echo Hint: use "pload ALL" command to load standard commands DRAWEXE.exe -c env.tcl Launch DRAWEXE with option -c caused error: C:\OpenCASCADE-7.3.0-vc10-64\opencascade-7.3.0>draw.bat Hint: use "pload ALL" command to load standard commands Draw[1]> can not find channel named "stdout" |
|
Fix is pushed (together with fix for 0030430) to branch CR30430 and tested, see Jenkins job CR30430-master. Please review. |
|
Please take the patch. |
|
Tested together with 0030430 |
occt: master 9b4243f9 2018-11-18 16:53:10
Committer: bugmaster Details Diff |
0030377: DRAW, Windows - command executed via option -c fails on puts When DRAW on Windows is launched with option -c, the command is now properly transferred to Tcl thread (separate thread that runs Tcl interpretor on Windows except when DRAW is run in batch mode) for execution, instead of being evaluated in the main thread. Execution of DRAW in batch mode (option -b) is fixed by enabling proper initialization of the Tcl interpretor and replacement of backslashes in path to startup script by straight slashes on Windows in that mode. Declaration of global variables used for communication of console command between threads is moved to Draw_Window.hxx to ensure consistency. Function wscpy_s is used instead of memcpy to avoid possible buffer overrun. |
Affected Issues 0030377 |
|
mod - src/Draw/CommandWindow.cxx | Diff File | ||
mod - src/Draw/Draw.cxx | Diff File | ||
mod - src/Draw/Draw_Window.cxx | Diff File | ||
mod - src/Draw/Draw_Window.hxx | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
2018-11-16 07:30 |
|
New Issue | |
2018-11-16 07:30 |
|
Assigned To | => apn |
2018-11-19 14:37 |
|
Note Added: 0081166 | |
2018-11-19 14:49 |
|
Note Edited: 0081166 | |
2018-11-19 14:50 |
|
Relationship added | related to 0029996 |
2018-11-20 11:26 | bugmaster | Note Added: 0081171 | |
2018-11-20 11:37 | bugmaster | Assigned To | apn => abv |
2019-01-10 10:41 |
|
Relationship added | related to 0030430 |
2019-01-10 10:44 |
|
Note Added: 0081701 | |
2019-01-10 10:44 |
|
Assigned To | abv => kgv |
2019-01-10 10:44 |
|
Status | new => resolved |
2019-01-10 11:26 | kgv | Note Added: 0081705 | |
2019-01-10 11:26 | kgv | Assigned To | kgv => bugmaster |
2019-01-10 11:26 | kgv | Status | resolved => reviewed |
2019-01-10 11:26 | kgv | Product Version | => 7.3.0 |
2019-01-10 16:36 | bugmaster | Test case number | => Not needed |
2019-01-10 16:37 | bugmaster | Note Added: 0081721 | |
2019-01-10 16:37 | bugmaster | Status | reviewed => tested |
2019-01-12 14:34 | bugmaster | Changeset attached | => occt master 9b4243f9 |
2019-01-12 14:34 | bugmaster | Status | tested => verified |
2019-01-12 14:34 | bugmaster | Resolution | open => fixed |