tcljava-user Mailing List for Tcl/Java (Page 3)
Brought to you by:
mdejong
You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(2) |
Nov
(23) |
Dec
(9) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(12) |
Feb
(10) |
Mar
(16) |
Apr
(10) |
May
(40) |
Jun
(13) |
Jul
(18) |
Aug
(4) |
Sep
(6) |
Oct
(3) |
Nov
|
Dec
(3) |
| 2002 |
Jan
(15) |
Feb
(19) |
Mar
(1) |
Apr
(11) |
May
(12) |
Jun
(10) |
Jul
(2) |
Aug
(22) |
Sep
|
Oct
(3) |
Nov
(9) |
Dec
(20) |
| 2003 |
Jan
(32) |
Feb
(5) |
Mar
(26) |
Apr
(30) |
May
(10) |
Jun
(8) |
Jul
(17) |
Aug
(7) |
Sep
(24) |
Oct
(7) |
Nov
(6) |
Dec
|
| 2004 |
Jan
(5) |
Feb
|
Mar
|
Apr
(7) |
May
(8) |
Jun
(12) |
Jul
(3) |
Aug
(11) |
Sep
(8) |
Oct
(4) |
Nov
(2) |
Dec
(6) |
| 2005 |
Jan
(8) |
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
(19) |
Jul
(8) |
Aug
(22) |
Sep
(12) |
Oct
(35) |
Nov
(12) |
Dec
(4) |
| 2006 |
Jan
(20) |
Feb
(14) |
Mar
(23) |
Apr
(10) |
May
(11) |
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(4) |
Nov
(17) |
Dec
(10) |
| 2007 |
Jan
(41) |
Feb
(6) |
Mar
(23) |
Apr
(15) |
May
(34) |
Jun
(5) |
Jul
(18) |
Aug
(13) |
Sep
(8) |
Oct
(9) |
Nov
(7) |
Dec
(2) |
| 2008 |
Jan
|
Feb
(1) |
Mar
(18) |
Apr
(1) |
May
(1) |
Jun
(10) |
Jul
(3) |
Aug
|
Sep
(10) |
Oct
(3) |
Nov
(13) |
Dec
(3) |
| 2009 |
Jan
(4) |
Feb
(10) |
Mar
(1) |
Apr
(11) |
May
(3) |
Jun
(7) |
Jul
(4) |
Aug
(9) |
Sep
(16) |
Oct
(3) |
Nov
(5) |
Dec
(2) |
| 2010 |
Jan
(3) |
Feb
|
Mar
|
Apr
(7) |
May
(1) |
Jun
|
Jul
|
Aug
(3) |
Sep
(3) |
Oct
(1) |
Nov
(1) |
Dec
|
| 2011 |
Jan
(3) |
Feb
|
Mar
(2) |
Apr
(17) |
May
(4) |
Jun
(17) |
Jul
(5) |
Aug
(7) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
(12) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(1) |
Jul
|
Aug
(3) |
Sep
(2) |
Oct
(6) |
Nov
|
Dec
(2) |
| 2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
(8) |
Jun
(1) |
Jul
|
Aug
(3) |
Sep
|
Oct
(3) |
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
(2) |
Apr
(2) |
May
(1) |
Jun
(3) |
Jul
(3) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2017 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2018 |
Jan
|
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
|
From: Tom P. <tpo...@ny...> - 2012-12-05 20:32:01
|
On Tue, Dec 04, 2012 at 10:59:18PM +0200, Evgeniy Gitomirskiy wrote: > Hi, > I'm trying to install jacl on my linux OS. When I run the configure script, > I have the next error: > checking for java_g... no > checking for javah... no > Cannot find javah on /usr/bin > I understand the role of this files, but I don't have any on my station. If > there any way to download them/solve this problem in other way? You might want to try the JTcl project's binary downloads. JTcl is an updated version of Jacl. See: http://jtcl.kenai.com/ Building from source is also a lot more Java friendly, using maven. Sources are available from the same download directory, or can be acquired by using Mercurial. -- Tom Poindexter tpo...@ny... |
|
From: Evgeniy G. <ev...@le...> - 2012-12-04 22:06:08
|
Hi, I'm trying to install jacl on my linux OS. When I run the configure script, I have the next error: checking for java_g... no checking for javah... no Cannot find javah on /usr/bin I understand the role of this files, but I don't have any on my station. If there any way to download them/solve this problem in other way? Tnx, Evgeniy |
|
From: liobod t. <lio...@gm...> - 2012-10-26 15:19:51
|
you get the point 2012/10/26 Ross, Bill <Bil...@ca...> > I think I understand it better now.**** > > You want a box to sit and listen for commands and then respond back to > them.**** > > Your problem is that the linux box intercepts the “|” symbol and doesn’t > pass it on.**** > > I have not done anything like that.**** > > ** ** > > ** ** > > *From:* liobod tcl [mailto:lio...@gm...] > *Sent:* Friday, October 26, 2012 9:46 AM > *To:* A list for users of tcljava > *Subject:* Re: [tcljava-user] '|' as a separator of distinct commands**** > > ** ** > > I'm also using expect. Expect4j to be precise and i am also able to send > and/or to receive the '|' through CLI on equipments. > > I just want to reproduce those equipments behaviour on a linux box (that's > i call a mock). > The aim is to test my application code against this box (this false > device) to ensure non-regression testing. > You can understand i cannot neither test against operationnal equipments > in the operationnal network nor have all my tests cases reproduced in a > specific test plateform . > So i want to mock my tests cases on a easily programmable machine. A linux > machine. > > And this linux system cannot natively consider the '|' an argument of a > command. > > For instance in those equipments you can have the following line : > > > cmd arg1 | arg3 > > > where '|' is the second argument. Not a separator. > > > On a typical linux shell, the only thing i can do is : > > > cmd1 arg 1 | cmd2 arg1 > > where '|' is a separator between cmd1 and cmd1. Not an argument. > > Hope i'm getting clearer. > > Thx,**** > > 2012/10/26 Ross, Bill <Bil...@ca...>**** > > I am not sure what you are trying to accomplish.**** > > I have used tcl with expect to communicate with Cisco devices.**** > > My script runs on a linux box**** > > I have been able to send the “|” character and capture and recognize it.** > ** > > There are a few times where I struggled getting some characters to work.** > ** > > I can send you some code if that is what you are trying to do. **** > > **** > > *From:* liobod tcl [mailto:lio...@gm...] > *Sent:* Friday, October 26, 2012 5:56 AM > *To:* tcl...@li... > *Subject:* [tcljava-user] '|' as a separator of distinct commands**** > > **** > > Hello world, > > Sorry if my topic is irrelevant considering this list. > In such case, you may gently tell me where this post would be more > appropriate! > > I'm trying to mock some network equipments (Cisco, Juniper, Whatever, ...) > shell on on a linux shell. > My problem is the '|' character : > - on most of those equipments, '|' is considered as an arg of a command > - on a linux shell, '|' is a separator of distinct commands > > I though tcl could help me to jump over this issue. > After i have installed tcl-8.4.13-4.el5.x86_64.rpm, I did some scripting > through tclsh, tclshrc with no success. > > By now, I'm still digging a full java solution trying to recreate a > console from scratch based on jacl. > I've been playing with > http://www.ensta-paristech.fr/~diam/tcl/online/Using_Tcl_in_Java-20010106.html > I did compile (except ConsoleThread.safeEvalCommand) and run it but i > cannot figure out how insert my custom commands. > > If any of you did face my need and/or this particular issue or found an > alternative solution, i'd be glad to get some return on experience. > > In one word, i'm afraid to face a dead-and problem soon. > And before i get completely stuck, i wonder if some of you guys could give > me a track... > > thanks. **** > > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > tcljava-user mailing list > tcl...@li... > https://lists.sourceforge.net/lists/listinfo/tcljava-user**** > > ** ** > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > tcljava-user mailing list > tcl...@li... > https://lists.sourceforge.net/lists/listinfo/tcljava-user > > |
|
From: Ross, B. <Bil...@Ca...> - 2012-10-26 14:44:37
|
I think I understand it better now. You want a box to sit and listen for commands and then respond back to them. Your problem is that the linux box intercepts the "|" symbol and doesn't pass it on. I have not done anything like that. From: liobod tcl [mailto:lio...@gm...] Sent: Friday, October 26, 2012 9:46 AM To: A list for users of tcljava Subject: Re: [tcljava-user] '|' as a separator of distinct commands I'm also using expect. Expect4j to be precise and i am also able to send and/or to receive the '|' through CLI on equipments. I just want to reproduce those equipments behaviour on a linux box (that's i call a mock). The aim is to test my application code against this box (this false device) to ensure non-regression testing. You can understand i cannot neither test against operationnal equipments in the operationnal network nor have all my tests cases reproduced in a specific test plateform . So i want to mock my tests cases on a easily programmable machine. A linux machine. And this linux system cannot natively consider the '|' an argument of a command. For instance in those equipments you can have the following line : > cmd arg1 | arg3 where '|' is the second argument. Not a separator. On a typical linux shell, the only thing i can do is : > cmd1 arg 1 | cmd2 arg1 where '|' is a separator between cmd1 and cmd1. Not an argument. Hope i'm getting clearer. Thx, 2012/10/26 Ross, Bill <Bil...@ca...<mailto:Bil...@ca...>> I am not sure what you are trying to accomplish. I have used tcl with expect to communicate with Cisco devices. My script runs on a linux box I have been able to send the "|" character and capture and recognize it. There are a few times where I struggled getting some characters to work. I can send you some code if that is what you are trying to do. From: liobod tcl [mailto:lio...@gm...<mailto:lio...@gm...>] Sent: Friday, October 26, 2012 5:56 AM To: tcl...@li...<mailto:tcl...@li...> Subject: [tcljava-user] '|' as a separator of distinct commands Hello world, Sorry if my topic is irrelevant considering this list. In such case, you may gently tell me where this post would be more appropriate! I'm trying to mock some network equipments (Cisco, Juniper, Whatever, ...) shell on on a linux shell. My problem is the '|' character : - on most of those equipments, '|' is considered as an arg of a command - on a linux shell, '|' is a separator of distinct commands I though tcl could help me to jump over this issue. After i have installed tcl-8.4.13-4.el5.x86_64.rpm, I did some scripting through tclsh, tclshrc with no success. By now, I'm still digging a full java solution trying to recreate a console from scratch based on jacl. I've been playing with http://www.ensta-paristech.fr/~diam/tcl/online/Using_Tcl_in_Java-20010106.html I did compile (except ConsoleThread.safeEvalCommand) and run it but i cannot figure out how insert my custom commands. If any of you did face my need and/or this particular issue or found an alternative solution, i'd be glad to get some return on experience. In one word, i'm afraid to face a dead-and problem soon. And before i get completely stuck, i wonder if some of you guys could give me a track... thanks. ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_sfd2d_oct _______________________________________________ tcljava-user mailing list tcl...@li...<mailto:tcl...@li...> https://lists.sourceforge.net/lists/listinfo/tcljava-user |
|
From: liobod t. <lio...@gm...> - 2012-10-26 13:45:56
|
I'm also using expect. Expect4j to be precise and i am also able to send and/or to receive the '|' through CLI on equipments. I just want to reproduce those equipments behaviour on a linux box (that's i call a mock). The aim is to test my application code against this box (this false device) to ensure non-regression testing. You can understand i cannot neither test against operationnal equipments in the operationnal network nor have all my tests cases reproduced in a specific test plateform . So i want to mock my tests cases on a easily programmable machine. A linux machine. And this linux system cannot natively consider the '|' an argument of a command. For instance in those equipments you can have the following line : > cmd arg1 | arg3 where '|' is the second argument. Not a separator. On a typical linux shell, the only thing i can do is : > cmd1 arg 1 | cmd2 arg1 where '|' is a separator between cmd1 and cmd1. Not an argument. Hope i'm getting clearer. Thx, 2012/10/26 Ross, Bill <Bil...@ca...> > I am not sure what you are trying to accomplish.**** > > I have used tcl with expect to communicate with Cisco devices.**** > > My script runs on a linux box**** > > I have been able to send the “|” character and capture and recognize it.** > ** > > There are a few times where I struggled getting some characters to work.** > ** > > I can send you some code if that is what you are trying to do. **** > > ** ** > > *From:* liobod tcl [mailto:lio...@gm...] > *Sent:* Friday, October 26, 2012 5:56 AM > *To:* tcl...@li... > *Subject:* [tcljava-user] '|' as a separator of distinct commands**** > > ** ** > > Hello world, > > Sorry if my topic is irrelevant considering this list. > In such case, you may gently tell me where this post would be more > appropriate! > > I'm trying to mock some network equipments (Cisco, Juniper, Whatever, ...) > shell on on a linux shell. > My problem is the '|' character : > - on most of those equipments, '|' is considered as an arg of a command > - on a linux shell, '|' is a separator of distinct commands > > I though tcl could help me to jump over this issue. > After i have installed tcl-8.4.13-4.el5.x86_64.rpm, I did some scripting > through tclsh, tclshrc with no success. > > By now, I'm still digging a full java solution trying to recreate a > console from scratch based on jacl. > I've been playing with > http://www.ensta-paristech.fr/~diam/tcl/online/Using_Tcl_in_Java-20010106.html > I did compile (except ConsoleThread.safeEvalCommand) and run it but i > cannot figure out how insert my custom commands. > > If any of you did face my need and/or this particular issue or found an > alternative solution, i'd be glad to get some return on experience. > > In one word, i'm afraid to face a dead-and problem soon. > And before i get completely stuck, i wonder if some of you guys could give > me a track... > > thanks. **** > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_sfd2d_oct > _______________________________________________ > tcljava-user mailing list > tcl...@li... > https://lists.sourceforge.net/lists/listinfo/tcljava-user > > |
|
From: Ross, B. <Bil...@Ca...> - 2012-10-26 13:25:16
|
I am not sure what you are trying to accomplish. I have used tcl with expect to communicate with Cisco devices. My script runs on a linux box I have been able to send the "|" character and capture and recognize it. There are a few times where I struggled getting some characters to work. I can send you some code if that is what you are trying to do. From: liobod tcl [mailto:lio...@gm...] Sent: Friday, October 26, 2012 5:56 AM To: tcl...@li... Subject: [tcljava-user] '|' as a separator of distinct commands Hello world, Sorry if my topic is irrelevant considering this list. In such case, you may gently tell me where this post would be more appropriate! I'm trying to mock some network equipments (Cisco, Juniper, Whatever, ...) shell on on a linux shell. My problem is the '|' character : - on most of those equipments, '|' is considered as an arg of a command - on a linux shell, '|' is a separator of distinct commands I though tcl could help me to jump over this issue. After i have installed tcl-8.4.13-4.el5.x86_64.rpm, I did some scripting through tclsh, tclshrc with no success. By now, I'm still digging a full java solution trying to recreate a console from scratch based on jacl. I've been playing with http://www.ensta-paristech.fr/~diam/tcl/online/Using_Tcl_in_Java-20010106.html I did compile (except ConsoleThread.safeEvalCommand) and run it but i cannot figure out how insert my custom commands. If any of you did face my need and/or this particular issue or found an alternative solution, i'd be glad to get some return on experience. In one word, i'm afraid to face a dead-and problem soon. And before i get completely stuck, i wonder if some of you guys could give me a track... thanks. |
|
From: liobod t. <lio...@gm...> - 2012-10-26 09:55:53
|
Hello world, Sorry if my topic is irrelevant considering this list. In such case, you may gently tell me where this post would be more appropriate! I'm trying to mock some network equipments (Cisco, Juniper, Whatever, ...) shell on on a linux shell. My problem is the '|' character : - on most of those equipments, '|' is considered as an arg of a command - on a linux shell, '|' is a separator of distinct commands I though tcl could help me to jump over this issue. After i have installed tcl-8.4.13-4.el5.x86_64.rpm, I did some scripting through tclsh, tclshrc with no success. By now, I'm still digging a full java solution trying to recreate a console from scratch based on jacl. I've been playing with http://www.ensta-paristech.fr/~diam/tcl/online/Using_Tcl_in_Java-20010106.html I did compile (except ConsoleThread.safeEvalCommand) and run it but i cannot figure out how insert my custom commands. If any of you did face my need and/or this particular issue or found an alternative solution, i'd be glad to get some return on experience. In one word, i'm afraid to face a dead-and problem soon. And before i get completely stuck, i wonder if some of you guys could give me a track... thanks. |
|
From: Andreas K. <and...@ac...> - 2012-10-15 17:48:26
|
19th Annual Tcl/Tk Conference (Tcl'2012) http://www.tcl.tk/community/tcl2012/ November 12 - 16, 2012 Sessions: National Museum of Health and Medicine Chicago 175 W. Washington Chicago, IL 60602 Rooms: Holiday Inn Chicago Mart Plaza 350 West Mart Center Drive Chicago, Illinois, USA Map/Transport: https://maps.google.com/maps/ms?msid=204739899073144451536.0004c144222a9036c99f6&msa=0&ll=41.885266,-87.633734&spn=0.008443,0.018818 http://wiki.tcl.tk/28843#pagetoca7e55932 Hello all. This is a reminder that the offer of reduced rates for rooms at the conference hotel expires on October 20, i.e. at the end of this week. Book Now! (if you haven't already). And talk to us should you run into trouble with the Hotel claiming to be sold out already before the deadline. Of course registration for the Conference is still open at http://www.tcl.tk/community/tcl2012/reg.html To book a room at the conference hotel at reduced rates please follow the instructions on that page. Our schedule can be found at http://www.tcl.tk/community/tcl2012/schedule.html Conference Committee Clif Flynt Noumena Corp General Chair, Website Admin Andreas Kupries ActiveState Software Inc. Program Chair Cyndy Lilagan Nat. Museum of Health & Medicine, Chicago Site/Facilities Chair Arjen Markus Deltares Brian Griffin Mentor Graphics Donal Fellows University of Manchester Gerald Lester KnG Consulting, LLC Jeffrey Hobbs ActiveState Software Inc. Kevin Kenny GE Global Research Center Larry Virden Mike Doyle National Museum of Health & Medicine, Chicago Ron Fox NSCL/FRIB Michigan State University Steve Landers Digital Smarties Contact Information tcl...@go... Tcl'2012 would like to thank those who are sponsoring the conference: ActiveState Software Inc. Buonacorsi Foundation Mentor Graphics Noumena Corp. SR Technology Tcl Community Association |
|
From: Andreas K. <and...@ac...> - 2012-09-10 18:56:22
|
19th Annual Tcl/Tk Conference (Tcl'2012) http://www.tcl.tk/community/tcl2012/ November 12 - 16, 2012 Sessions: National Museum of Health and Medicine Chicago 175 W. Washington Chicago, IL 60602 Rooms: Holiday Inn Chicago Mart Plaza 350 West Mart Center Drive Chicago, Illinois, USA Map/Transport: https://maps.google.com/maps/ms?msid=204739899073144451536.0004c144222a9036c99f6&msa=0&ll=41.885266,-87.633734&spn=0.008443,0.018818 http://wiki.tcl.tk/28843#pagetoca7e55932 I am pleased to announce that registration for the Conference is now open at http://www.tcl.tk/community/tcl2012/reg.html To book a room at the conference hotel at reduced rates please follow the instructions on that page. Note that the offer of reduced rates expires on October 20. Book early. Our schedule can be found at http://www.tcl.tk/community/tcl2012/schedule.html Conference Committee Clif Flynt Noumena Corp General Chair, Website Admin Andreas Kupries ActiveState Software Inc. Program Chair Cyndy Lilagan Nat. Museum of Health & Medicine, Chicago Site/Facilities Chair Arjen Markus Deltares Brian Griffin Mentor Graphics Donal Fellows University of Manchester Gerald Lester KnG Consulting, LLC Jeffrey Hobbs ActiveState Software Inc. Kevin Kenny GE Global Research Center Larry Virden Mike Doyle National Museum of Health & Medicine, Chicago Ron Fox NSCL/FRIB Michigan State University Steve Landers Digital Smarties Contact Information tcl...@go... Tcl'2012 would like to thank those who are sponsoring the conference: ActiveState Software Inc. Buonacorsi Foundation Mentor Graphics Noumena Corp. SR Technology Tcl Community Association |
|
From: Shibu C. <shi...@ya...> - 2012-09-01 00:25:43
|
http://translator.6te.net/atmlse.php?hwux=hwux |
|
From: Shibu C. <shi...@ya...> - 2012-08-31 18:30:23
|
http://www.programul-prima-casa.ro/wp-content/plugins/zwuweawjvmc/ikhkjskl.php?syzj=syzj |
|
From: Shibu C. <shi...@ya...> - 2012-08-31 12:11:02
|
http://www.mexicollectables.com/pmngbl.php?ctbb=ctbb |
|
From: Andreas K. <and...@ac...> - 2012-08-07 18:25:20
|
[[
Get your papers, WIPs and posters in.
(We have an exhibition hall with 25 gesture-controlled screens to
show the latter two on).
The deadline for abstracts and proposals is
three weeks away.
]]
[[ Notes:
Colin Walker of F5 is confirmed as our Keynote speaker.
http://www.f5.com
]]
19th Annual Tcl/Tk Conference (Tcl'2012)
http://www.tcl.tk/community/tcl2012/
November 12 - 16, 2012
Sessions:
National Museum of Health and Medicine Chicago
175 W. Washington
Chicago, IL 60602
Rooms:
Holiday Inn Chicago Mart Plaza
350 West Mart Center Drive
Chicago, Illinois, USA
Map:
https://maps.google.com/maps/ms?msid=204739899073144451536.0004c144222a9036c99f6&msa=0&ll=41.885266,-87.633734&spn=0.008443,0.018818
Important Dates:
Abstracts and proposals due August 27, 2012
Notification to authors September 10, 2012
WIP and BOF reservations open August 6, 2012
Author materials due October 29, 2012
Tutorials Start November 12, 2012
Conference starts November 14, 2012
Email Contact: tcl...@go...
Submission of Summaries
Tcl/Tk 2012 will be held in Chicago, Illinois, USA from November 12 -
16, 2012. The program committee is asking for papers and presentation
proposals from anyone using or developing with Tcl/Tk (and
extensions). Past conferences have seen submissions covering a wide
variety of topics including:
* Scientific and engineering applications
* Industrial controls
* Distributed applications and Network Managment
* Object oriented extensions to Tcl/Tk
* New widgets for Tk
* Simulation and application steering with Tcl/Tk
* Tcl/Tk-centric operating environments
* Tcl/Tk on small and embedded devices
* Medical applications and visualization
* Use of different programming paradigms in Tcl/Tk and proposals for new
directions.
* New areas of exploration for the Tcl/Tk language
Submissions should consist of an abstract of about 100 words and a
summary of not more than two pages, and should be sent as plain text
to <tclconference AT googlegroups DOT com> no later than August 27,
2012. Authors of accepted abstracts will have until October 29, 2012
to submit their final paper for the inclusion in the conference
proceedings. The proceedings will be made available on digital media,
so extra materials such as presentation slides, code examples, code
for extensions etc. are encouraged.
Printed proceedings will be produced as an on-demand book at lulu.com
The authors will have 25 minutes to present their paper at the
conference.
The program committee will review and evaluate papers according to the
following criteria:
* Quantity and quality of novel content
* Relevance and interest to the Tcl/Tk community
* Suitability of content for presentation at the conference
Proposals may report on commercial or non-commercial systems, but
those with only blatant marketing content will not be accepted.
Application and experience papers need to strike a balance between
background on the application domain and the relevance of Tcl/Tk to
the application. Application and experience papers should clearly
explain how the application or experience illustrates a novel use of
Tcl/Tk, and what lessons the Tcl/Tk community can derive from the
application or experience to apply to their own development efforts.
Papers accompanied by non-disclosure agreements will be returned to
the author(s) unread. All submissions are held in the highest
confidentiality prior to publication in the Proceedings, both as a
matter of policy and in accord with the U. S. Copyright Act of 1976.
The primary author for each accepted paper will receive registration
to the Technical Sessions portion of the conference at a reduced rate.
Other Forms of Participation
The program committee also welcomes proposals for panel discussions of
up to 90 minutes. Proposals should include a list of confirmed
panelists, a title and format, and a panel description with position
statements from each panelist. Panels should have no more than four
speakers, including the panel moderator, and should allow time for
substantial interaction with attendees. Panels are not presentations
of related research papers.
Slots for Works-in-Progress (WIP) presentations and Birds-of-a-Feather
sessions (BOFs) are available on a first-come, first-served basis
starting in August 6, 2012. Specific instructions for reserving WIP
and BOF time slots will be provided in the registration information
available in June 2012. Some WIP and BOF time slots will be held open
for on-site reservation. All attendees with an interesting work in
progress should consider reserving a WIP slot.
Registration Information
More information on the conference is available the conference Web
site (http://www.tcl.tk/community/tcl2012/) and will be published on
various Tcl/Tk-related information channels.
To keep in touch with news regarding the conference and Tcl events in
general, subscribe to the tcl-announce list. See:
http://code.activestate.com/lists/tcl-announce to subscribe to the
tcl-announce mailing list.
Conference Committee
Clif Flynt Noumena Corp General Chair, Website Admin
Andreas Kupries ActiveState Software Inc. Program Chair
Cyndy Lilagan Nat. Museum of Health & Medicine, Chicago Site/Facilities Chair
Arjen Markus Deltares
Brian Griffin Mentor Graphics
Donal Fellows University of Manchester
Gerald Lester KnG Consulting, LLC
Jeffrey Hobbs ActiveState Software Inc.
Kevin Kenny GE Global Research Center
Larry Virden
Mike Doyle National Museum of Health & Medicine, Chicago
Ron Fox NSCL/FRIB Michigan State University
Steve Landers Digital Smarties
Contact Information tcl...@go...
Tcl'2012 would like to thank those who are sponsoring the conference:
ActiveState Software Inc.
Buonacorsi Foundation
Mentor Graphics
Noumena Corp.
SR Technology
Tcl Community Association
|
|
From: Shibu C. <shi...@ya...> - 2012-06-29 17:16:26
|
http://meljin.co.za/pagnrk.html |
|
From: Andreas K. <and...@ac...> - 2012-05-30 15:46:18
|
[[ Notes: Colin Walker of F5 is confirmed as our Keynote speaker. http://www.f5.com ]] 19th Annual Tcl/Tk Conference (Tcl'2012) http://www.tcl.tk/community/tcl2012/ November 12 - 16, 2012 Holiday Inn Chicago Mart Plaza 350 West Mart Center Drive Chicago, Illinois, USA Important Dates: Abstracts and proposals due August 27, 2012 Notification to authors September 10, 2012 WIP and BOF reservations open August 6, 2012 Author materials due October 29, 2012 Tutorials Start November 12, 2012 Conference starts November 14, 2012 Email Contact: tcl...@go... Submission of Summaries Tcl/Tk 2012 will be held in Chicago, Illinois, USA from November 12 - 16, 2012. The program committee is asking for papers and presentation proposals from anyone using or developing with Tcl/Tk (and extensions). Past conferences have seen submissions covering a wide variety of topics including: * Scientific and engineering applications * Industrial controls * Distributed applications and Network Managment * Object oriented extensions to Tcl/Tk * New widgets for Tk * Simulation and application steering with Tcl/Tk * Tcl/Tk-centric operating environments * Tcl/Tk on small and embedded devices * Medical applications and visualization * Use of different programming paradigms in Tcl/Tk and proposals for new directions. * New areas of exploration for the Tcl/Tk language Submissions should consist of an abstract of about 100 words and a summary of not more than two pages, and should be sent as plain text to <tclconference AT googlegroups DOT com> no later than August 27, 2012. Authors of accepted abstracts will have until October 29, 2012 to submit their final paper for the inclusion in the conference proceedings. The proceedings will be made available on digital media, so extra materials such as presentation slides, code examples, code for extensions etc. are encouraged. Printed proceedings will be produced as an on-demand book at lulu.com The authors will have 25 minutes to present their paper at the conference. The program committee will review and evaluate papers according to the following criteria: * Quantity and quality of novel content * Relevance and interest to the Tcl/Tk community * Suitability of content for presentation at the conference Proposals may report on commercial or non-commercial systems, but those with only blatant marketing content will not be accepted. Application and experience papers need to strike a balance between background on the application domain and the relevance of Tcl/Tk to the application. Application and experience papers should clearly explain how the application or experience illustrates a novel use of Tcl/Tk, and what lessons the Tcl/Tk community can derive from the application or experience to apply to their own development efforts. Papers accompanied by non-disclosure agreements will be returned to the author(s) unread. All submissions are held in the highest confidentiality prior to publication in the Proceedings, both as a matter of policy and in accord with the U. S. Copyright Act of 1976. The primary author for each accepted paper will receive registration to the Technical Sessions portion of the conference at a reduced rate. Other Forms of Participation The program committee also welcomes proposals for panel discussions of up to 90 minutes. Proposals should include a list of confirmed panelists, a title and format, and a panel description with position statements from each panelist. Panels should have no more than four speakers, including the panel moderator, and should allow time for substantial interaction with attendees. Panels are not presentations of related research papers. Slots for Works-in-Progress (WIP) presentations and Birds-of-a-Feather sessions (BOFs) are available on a first-come, first-served basis starting in August 6, 2012. Specific instructions for reserving WIP and BOF time slots will be provided in the registration information available in June 2012. Some WIP and BOF time slots will be held open for on-site reservation. All attendees with an interesting work in progress should consider reserving a WIP slot. Registration Information More information on the conference is available the conference Web site (http://www.tcl.tk/community/tcl2012/) and will be published on various Tcl/Tk-related information channels. To keep in touch with news regarding the conference and Tcl events in general, subscribe to the tcl-announce list. See: http://code.activestate.com/lists/tcl-announce to subscribe to the tcl-announce mailing list. Conference Committee Clif Flynt Noumena Corp General Chair, Website Admin Andreas Kupries ActiveState Software Inc. Program Chair Cyndy Lilagan Nat. Museum of Health & Medicine, Chicago Site/Facilities Chair Arjen Markus Deltares Brian Griffin Mentor Graphics Donal Fellows University of Manchester Gerald Lester KnG Consulting, LLC Jeffrey Hobbs ActiveState Software Inc. Kevin Kenny GE Global Research Center Larry Virden Mike Doyle National Museum of Health & Medicine, Chicago Ron Fox NSCL/FRIB Michigan State University Steve Landers Digital Smarties Contact Information tcl...@go... Tcl'2012 would like to thank those who are sponsoring the conference: ActiveState Software Inc. Buonacorsi Foundation Mentor Graphics Noumena Corp. SR Technology Tcl Community Association |
|
From: Andreas K. <and...@ac...> - 2012-04-02 19:12:22
|
19th Annual Tcl/Tk Conference (Tcl'2012) http://www.tcl.tk/community/tcl2012/ November 12 - 16, 2012 Holiday Inn Chicago Mart Plaza 350 West Mart Center Drive Chicago, Illinois, USA Important Dates: Abstracts and proposals due August 27, 2012 Notification to authors September 10, 2012 WIP and BOF reservations open August 6, 2012 Author materials due October 29, 2012 Tutorials Start November 12, 2012 Conference starts November 14, 2012 Email Contact: tcl...@go... Submission of Summaries Tcl/Tk 2012 will be held in Chicago, Illinois, USA from November 12 - 16, 2012. The program committee is asking for papers and presentation proposals from anyone using or developing with Tcl/Tk (and extensions). Past conferences have seen submissions covering a wide variety of topics including: * Scientific and engineering applications * Industrial controls * Distributed applications and Network Managment * Object oriented extensions to Tcl/Tk * New widgets for Tk * Simulation and application steering with Tcl/Tk * Tcl/Tk-centric operating environments * Tcl/Tk on small and embedded devices * Medical applications and visualization * Use of different programming paradigms in Tcl/Tk and proposals for new directions. * New areas of exploration for the Tcl/Tk language Submissions should consist of an abstract of about 100 words and a summary of not more than two pages, and should be sent as plain text to <tclconference AT googlegroups DOT com> no later than August 27, 2012. Authors of accepted abstracts will have until October 29, 2012 to submit their final paper for the inclusion in the conference proceedings. The proceedings will be made available on digital media, so extra materials such as presentation slides, code examples, code for extensions etc. are encouraged. Printed proceedings will be produced as an on-demand book at lulu.com The authors will have 25 minutes to present their paper at the conference. The program committee will review and evaluate papers according to the following criteria: * Quantity and quality of novel content * Relevance and interest to the Tcl/Tk community * Suitability of content for presentation at the conference Proposals may report on commercial or non-commercial systems, but those with only blatant marketing content will not be accepted. Application and experience papers need to strike a balance between background on the application domain and the relevance of Tcl/Tk to the application. Application and experience papers should clearly explain how the application or experience illustrates a novel use of Tcl/Tk, and what lessons the Tcl/Tk community can derive from the application or experience to apply to their own development efforts. Papers accompanied by non-disclosure agreements will be returned to the author(s) unread. All submissions are held in the highest confidentiality prior to publication in the Proceedings, both as a matter of policy and in accord with the U. S. Copyright Act of 1976. The primary author for each accepted paper will receive registration to the Technical Sessions portion of the conference at a reduced rate. Other Forms of Participation The program committee also welcomes proposals for panel discussions of up to 90 minutes. Proposals should include a list of confirmed panelists, a title and format, and a panel description with position statements from each panelist. Panels should have no more than four speakers, including the panel moderator, and should allow time for substantial interaction with attendees. Panels are not presentations of related research papers. Slots for Works-in-Progress (WIP) presentations and Birds-of-a-Feather sessions (BOFs) are available on a first-come, first-served basis starting in August 6, 2012. Specific instructions for reserving WIP and BOF time slots will be provided in the registration information available in June 2012. Some WIP and BOF time slots will be held open for on-site reservation. All attendees with an interesting work in progress should consider reserving a WIP slot. Registration Information More information on the conference is available the conference Web site (http://www.tcl.tk/community/tcl2012/) and will be published on various Tcl/Tk-related information channels. To keep in touch with news regarding the conference and Tcl events in general, subscribe to the tcl-announce list. See: http://code.activestate.com/lists/tcl-announce to subscribe to the tcl-announce mailing list. Conference Committee Clif Flynt Noumena Corp General Chair, Website Admin Andreas Kupries ActiveState Software Inc. Program Chair Cyndy Lilagan Nat. Museum of Health & Medicine, Chicago Site/Facilities Chair Brian Griffin Mentor Graphics Ron Fox NSCL/FRIB Michigan State University Arjen Markus Deltares Mike Doyle National Museum of Health & Medicine, Chicago Gerald Lester KnG Consulting, LLC Donal Fellows University of Manchester Jeffrey Hobbs ActiveState Software Inc. Steve Landers Digital Smarties Kevin Kenny GE Global Research Center Contact Information tcl...@go... Tcl'2012 would like to thank those who are sponsoring the conference: ActiveState Software Inc. Buonacorsi Foundation Mentor Graphics Noumena Corp. SR Technology Tcl Community Association |
|
From: Russell R. <rus...@gm...> - 2012-02-23 15:43:15
|
Mo,
I tried to parse your suggestion about how to proceed but I'm afraid you
lost me.
Tclblend is a powerful and elegant marriage of tcl and java. I'd really
hoped to make it work for my application because it would result in a clean
and simple implementation. Unfortunately I seem to have run into a corner
case issue with this crash. I think I may be getting in over my head w/
this and with you my only resource for resolving roadblocks it places
unreasonable expectations on you and is risky for me going forward. (As it
is I'm probably looking at a more loosely coupled solution with a separate
pure-Java process to handle my http/cometd stuff with some ipc mechanism
back to tcl land.)
Thank you for the time and effort you invested in helping me and bringing
the investigation this far. Hopefully other will benefit from the
discussion.
Best regards,
Russell
On Mon, Feb 20, 2012 at 6:41 PM, Mo DeJong <mo...@mo...> wrote:
> I would not start messing around with the internal implementations of
> these libraries. The issue with integrating with Tcl Blend is that when you
> start calling C code from different threads, you have to make sure it is
> done in a thread safe way. That is what the setup and checking that Tcl
> Blend is doing actually does. The code is setting up a threaded version of
> Tcl Blend that can then be called from multiple threads in a safe way.
>
> But, the problem with the Java libs is that they are doing some fancy
> thread pooling stuff to get max performance with networking, and this
> approach is at odds with what Tcl Blend expects. You don't want to have to
> init a Tcl Blend interp in every thread in the thread pool. The Java code
> is assuming that one thread in the pool is the same as another. But, once
> you start linking thread specific data at the C layer, that assumption is
> no longer valid.
>
> What I would do if I were you is rethink the basic approach. Have 1 thread
> that is the Tcl Blend "processing" thread. This thread can wait for a
> request to do something that comes from one of these Java threads in the
> thread pool. The Tcl Blend thread can then be setup properly with an interp
> created in that thread. The Java network thread puts a request in queue,
> then waits for it to be done. The Tcl Blend thread just processes one
> request at a time and delivers the result back to the waiting Java thread.
>
> That is about as simple as it gets, and it means that your Java part of
> the solution will not depend on threaded interactions at the C layer.
>
> cheers
> Mo DeJong
>
>
> On Feb 20, 2012, at 2:17 PM, Russell Roy wrote:
>
> Mo,
>
> Ok, so thanks for that explanation.
>
> I've attached a log w/ TCBLEND_DEBUG enabled. I must have a different
> version of tclblend than what you quoted below (I'd pulled the latest
> sources directly from the tree at sourceforge ...as opposed to the
> prepackaged. I don't have sources for tclblend.jar.) as I don't see the
> explicit "Calling Tcl_CreateInterp) ... but, no matter I do see ouput
> related to JavaSetupJava success and we do get off the ground properly.
> The point you make is that I need to see *two* of these, when in fact I
> only see one.
>
> I hope this is not getting into too much detail but HttpClient gets run on
> a separate thread. It *hasA* SocketConnector or a
> SelectChannelConnector. These in turn simulate multithreading within a
> single java thread by means of a synchronous dispatcher ("dispatch") -
> one for each HttpClient connection attempt:
>
> [rroy@deepwater client]$ pwd
> /home/rroy/jetty-all-8.1.0.v20120127-sources/org/eclipse/jetty/client
> [rroy@deepwater client]$ grep "run(" *
> HttpClient.java: public void run()
> SocketConnector.java: public void run()
> [rroy@deepwater client]$
> [rroy@deepwater client]$ grep dispatch *
> HttpClient.java: _threadPool.dispatch(new Runnable()
> SelectConnector.java: public boolean dispatch(Runnable task)
> SelectConnector.java: return
> _httpClient._threadPool.dispatch(task);
> SocketConnector.java: _httpClient.getThreadPool().dispatch(new
> Runnable()
> [rroy@deepwater client]$
>
> Obviously, being third party code, they know nothing about tclblend.
>
> Now, as it happens, this (Jetty) is *open source* so I could, in theory,
> get in there and start mucking about to insure that the appropriate
> per-thread tclblend init takes place (I have no idea the implications of
> "dispatch") but this seems pretty ugly to me. And what would one do
> with a *closed* third-party package for which threading was an issue? Is
> it too strong a statement to say that tclblend has limited utility when it
> comes to java threading?
>
> Whereas I know the javclsh has not experienced this crash for my
> application I guess I'd be more inclined to try to make that solution work
> for me. My problem there though is I need to be able to pull in some
> other Tcl packages like Expect, Itcl, etc and it wasn't clear to me whether
> jaclsh was capable of loading any legal Tcl package in the same manner as
> the "normal" tcl interpreter (I notice you use XpUtils::iload rather than
> load .... i'm a bit fuzzy on that.)
>
> Anywho ... I think we're coming to the end of the road on this issue. I
> appreciate your advice.
>
> Russell
> On Sun, Feb 19, 2012 at 10:48 PM, Mo DeJong <mo...@mo...> wrote:
>
>> So, I am almost 100% sure that the issue is with the fact that Tcl Blend
>> is not getting initialized in that secondary thread that your Java library
>> is creating.
>>
>> Here is the related code that gets invoked when Interp() is called from
>> Java code.
>>
>> jlong JNICALL
>> Java_tcl_lang_Interp_create(
>> JNIEnv *env, /* Java environment. */
>> jobject interpObj) /* Handle to Interp object. */
>> {
>> jlong lvalue;
>> Tcl_Interp *interp;
>>
>> #ifdef TCLBLEND_DEBUG
>> fprintf(stderr, "TCLBLEND_DEBUG: Calling Tcl_CreateInterp()\n");
>> #endif /* TCLBLEND_DEBUG */
>>
>> interp = Tcl_CreateInterp();
>> if (JavaSetupJava(env, interp) != TCL_OK) {
>> jclass err = (*env)->FindClass(env, "tcl/lang/TclRuntimeError");
>> if (err) {
>> (*env)->ThrowNew(env, err, Tcl_GetStringResult(interp));
>> (*env)->DeleteLocalRef(env, err);
>> }
>> Tcl_DeleteInterp(interp);
>> lvalue = 0;
>> } else {
>> lvalue = 0;
>> *(Tcl_Interp**)&lvalue = interp;
>> }
>> return lvalue;
>> }
>>
>> That call to JavaSetupJava() will init the thread specific data that Tcl
>> Blend needs. In your case, this init is not getting done. My guess would be
>> that what is going on is that you created the Interp Java object in one
>> thread, but then you pass it to another thread and try to invoke methods in
>> that other thread. That will not work for a Tcl Blend interp because the
>> interp object needs to be created in the same thread where it will be used
>> used. This would typically work with a Java object in Jacl, but Tcl Blend
>> is much more strict about how objects are used from threads. Could you take
>> a look at your code and make sure the interp logic is getting invoked from
>> the same thread that originally created the specific Interp object.
>>
>> Mo
>>
>> On Feb 18, 2012, at 2:05 PM, Russell Roy wrote:
>>
>> Mo,
>>
>> Thanks for taking the time to respond.
>>
>> I'd already taken the step of turning on the TCLBLEND_DEBUG.
>> Unfortunately, the last debug output prior to the crash provided no new
>> information - just that JavaCmdProc had been called.
>>
>> I will poke around a bit more in the open source Jetty HttpClient code to
>> see if I can discern anything there. Yes, there is a new thread kicked
>> off in there. I'd gone so far as to put some println's in that code to
>> see if I could narrow the focus. That seems to indicate we're making it
>> all the way through the HttpClient start method in the main thread and
>> crash upon return into tclblend...but i may be misinterpreting (i don't
>> pretend to know what i'm doing when it comes to the threaded world.) The
>> most solid info I got was running it in gdb which showed the underlying
>> cause of the failed tclblend assert as sigsev while switching threads.
>>
>> One other clue: I'm running the exact same script in jtclsh and jaclsh.
>> What is it telling us that this crash occurs in jtclsh instance but runs
>> cleanly in jaclsh?
>>
>> Any hope that the problem might just 'go away' were I to find a way to do
>> my tclblend in tcl8.5 (where the thread implementation is part of the tcl
>> core) as opposed to the current external thread pkg?
>>
>> Russell
>>
>> On Fri, Feb 17, 2012 at 2:09 PM, Mo DeJong <mo...@mo...> wrote:
>>
>>> Hi Russell
>>>
>>> So, this has something to do with threads. The specific assert you are
>>> running into is in JavaGetCache()
>>>
>>>
>>> http://tcljava.cvs.sourceforge.net/viewvc/tcljava/tcljava/src/native/javaCmd.c?revision=1.27&view=markup
>>>
>>> See line 398:
>>>
>>>
>>> 393 TCLBLEND_EXTERN JavaInfo*
>>> 394 JavaGetCache()
>>> 395 {
>>> 396 ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
>>> 397
>>> 398 assert(tsdPtr->initialized);
>>> 399
>>> 400 return &(tsdPtr->jcache);
>>> 401 }
>>>
>>>
>>> So, this assert is being hit because the Java code calls into Tcl Blend
>>> and then Tcl Blend checks to see if the thread specific data has been
>>> initialized in this thread. That assert is failing for unknown reasons.
>>>
>>> My first thought would be to check to see if the Java code in your
>>> HttpClient is actually creating another background thread and then invoking
>>> Tcl Blend methods in that other background thread. That would be the most
>>> likely cause of the assert. It is quite honestly hard to track down Tcl
>>> Blend problems in gdb, it is possible, but not easy because Java calls into
>>> C and vice versa. It is possible to set breakpoints in the Tcl Blend C
>>> code, but it takes some gdb mojo.
>>>
>>> You can also enable the TCLBLEND_DEBUG macro and create a build that
>>> will print debug and init messages as it is loaded. This is a lot easier
>>> way to debug these issues compared to using gdb.
>>>
>>> As far as the class loading issue goes, it does seem very odd. What I
>>> would do is try to "exec javap CLASS" and see if you can invoke the JVM
>>> with the specific classpath you are using. If you can't get the JDK tools
>>> to read from that classpath, then that is the source of your problem. Also,
>>> make sure the classpath being used in Jacl is exactly the same as the one
>>> being used in Tcl Blend (aside from jacl.jar vs tclblend.jar).
>>>
>>> Mo
>>>
>>> On Feb 16, 2012, at 12:20 PM, Russell Roy wrote:
>>>
>>> > I have a simple script. It works w/o error in jaclsh. It core dumps
>>> in jtclsh.
>>> >
>>> > Here's the script:
>>> >
>>> > 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..."
>>> > 2 package require java
>>> > 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient]
>>> > 4 $httpClient start
>>> >
>>> > The script crashes in jtclsh on line 4 with this message:
>>> >
>>> > tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398:
>>> JavaGetCache: Assertion `tsdPtr->initialized' failed.
>>> > Aborted (core dumped)
>>> >
>>> > That's the whole of the output when the thing dies.
>>> >
>>> >
>>> > I was hoping to be able to do some java debugging by running the
>>> script in jaclsh but, as I said, the thing works fine there - no problem,
>>> no crash. I really need this to work in jctlsh.
>>> >
>>> >
>>> > I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and
>>> thread2.6.5, tcl 8.4.19 (I also tried various permutations and
>>> combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend,
>>> all w/o any luck.)
>>> >
>>> > I've rebuilt and and re-installed tclBlend cleanly with each change so
>>> as to ensure consistency and jaclsh and jtclsh are setting up a correct
>>> environment but the problem persists.
>>> >
>>> > I stuck the core image in gdb but I there's was nothing discernibly
>>> useful, to me anyways (I believe the failed assertion is forcing the core
>>> dump.)
>>> >
>>> >
>>> > I've run out of ideas on how to debug this.
>>> >
>>> >
>>> > Russ
>>> >
>>> > PS: For what it's worth ... The HttpClient of above comes in two
>>> flavors - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I
>>> happened to discover through trial and error that if I configure the client
>>> as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh.
>>> That's interesting but it doesn't help me because I need to run in it as
>>> select channel.
>>> >
>>> >
>>> >
>>> >
>>> ------------------------------------------------------------------------------
>>> > Virtualization & Cloud Management Using Capacity Planning
>>> > Cloud computing makes use of virtualization - but cloud computing
>>> > also focuses on allowing computing to be delivered as a service.
>>> >
>>> http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________
>>> > tcljava-user mailing list
>>> > tcl...@li...
>>> > https://lists.sourceforge.net/lists/listinfo/tcljava-user
>>>
>>>
>>
>>
> <tclblend.log>
>
>
>
|
|
From: Mo D. <mo...@mo...> - 2012-02-20 23:42:11
|
I would not start messing around with the internal implementations of these libraries. The issue with integrating with Tcl Blend is that when you start calling C code from different threads, you have to make sure it is done in a thread safe way. That is what the setup and checking that Tcl Blend is doing actually does. The code is setting up a threaded version of Tcl Blend that can then be called from multiple threads in a safe way.
But, the problem with the Java libs is that they are doing some fancy thread pooling stuff to get max performance with networking, and this approach is at odds with what Tcl Blend expects. You don't want to have to init a Tcl Blend interp in every thread in the thread pool. The Java code is assuming that one thread in the pool is the same as another. But, once you start linking thread specific data at the C layer, that assumption is no longer valid.
What I would do if I were you is rethink the basic approach. Have 1 thread that is the Tcl Blend "processing" thread. This thread can wait for a request to do something that comes from one of these Java threads in the thread pool. The Tcl Blend thread can then be setup properly with an interp created in that thread. The Java network thread puts a request in queue, then waits for it to be done. The Tcl Blend thread just processes one request at a time and delivers the result back to the waiting Java thread.
That is about as simple as it gets, and it means that your Java part of the solution will not depend on threaded interactions at the C layer.
cheers
Mo DeJong
On Feb 20, 2012, at 2:17 PM, Russell Roy wrote:
> Mo,
>
> Ok, so thanks for that explanation.
>
> I've attached a log w/ TCBLEND_DEBUG enabled. I must have a different version of tclblend than what you quoted below (I'd pulled the latest sources directly from the tree at sourceforge ...as opposed to the prepackaged. I don't have sources for tclblend.jar.) as I don't see the explicit "Calling Tcl_CreateInterp) ... but, no matter I do see ouput related to JavaSetupJava success and we do get off the ground properly. The point you make is that I need to see *two* of these, when in fact I only see one.
>
> I hope this is not getting into too much detail but HttpClient gets run on a separate thread. It hasA SocketConnector or a SelectChannelConnector. These in turn simulate multithreading within a single java thread by means of a synchronous dispatcher ("dispatch") - one for each HttpClient connection attempt:
>
> [rroy@deepwater client]$ pwd
> /home/rroy/jetty-all-8.1.0.v20120127-sources/org/eclipse/jetty/client
> [rroy@deepwater client]$ grep "run(" *
> HttpClient.java: public void run()
> SocketConnector.java: public void run()
> [rroy@deepwater client]$
> [rroy@deepwater client]$ grep dispatch *
> HttpClient.java: _threadPool.dispatch(new Runnable()
> SelectConnector.java: public boolean dispatch(Runnable task)
> SelectConnector.java: return _httpClient._threadPool.dispatch(task);
> SocketConnector.java: _httpClient.getThreadPool().dispatch(new Runnable()
> [rroy@deepwater client]$
>
> Obviously, being third party code, they know nothing about tclblend.
>
> Now, as it happens, this (Jetty) is open source so I could, in theory, get in there and start mucking about to insure that the appropriate per-thread tclblend init takes place (I have no idea the implications of "dispatch") but this seems pretty ugly to me. And what would one do with a closed third-party package for which threading was an issue? Is it too strong a statement to say that tclblend has limited utility when it comes to java threading?
>
> Whereas I know the javclsh has not experienced this crash for my application I guess I'd be more inclined to try to make that solution work for me. My problem there though is I need to be able to pull in some other Tcl packages like Expect, Itcl, etc and it wasn't clear to me whether jaclsh was capable of loading any legal Tcl package in the same manner as the "normal" tcl interpreter (I notice you use XpUtils::iload rather than load .... i'm a bit fuzzy on that.)
>
> Anywho ... I think we're coming to the end of the road on this issue. I appreciate your advice.
>
> Russell
> On Sun, Feb 19, 2012 at 10:48 PM, Mo DeJong <mo...@mo...> wrote:
> So, I am almost 100% sure that the issue is with the fact that Tcl Blend is not getting initialized in that secondary thread that your Java library is creating.
>
> Here is the related code that gets invoked when Interp() is called from Java code.
>
> jlong JNICALL
> Java_tcl_lang_Interp_create(
> JNIEnv *env, /* Java environment. */
> jobject interpObj) /* Handle to Interp object. */
> {
> jlong lvalue;
> Tcl_Interp *interp;
>
> #ifdef TCLBLEND_DEBUG
> fprintf(stderr, "TCLBLEND_DEBUG: Calling Tcl_CreateInterp()\n");
> #endif /* TCLBLEND_DEBUG */
>
> interp = Tcl_CreateInterp();
> if (JavaSetupJava(env, interp) != TCL_OK) {
> jclass err = (*env)->FindClass(env, "tcl/lang/TclRuntimeError");
> if (err) {
> (*env)->ThrowNew(env, err, Tcl_GetStringResult(interp));
> (*env)->DeleteLocalRef(env, err);
> }
> Tcl_DeleteInterp(interp);
> lvalue = 0;
> } else {
> lvalue = 0;
> *(Tcl_Interp**)&lvalue = interp;
> }
> return lvalue;
> }
>
> That call to JavaSetupJava() will init the thread specific data that Tcl Blend needs. In your case, this init is not getting done. My guess would be that what is going on is that you created the Interp Java object in one thread, but then you pass it to another thread and try to invoke methods in that other thread. That will not work for a Tcl Blend interp because the interp object needs to be created in the same thread where it will be used used. This would typically work with a Java object in Jacl, but Tcl Blend is much more strict about how objects are used from threads. Could you take a look at your code and make sure the interp logic is getting invoked from the same thread that originally created the specific Interp object.
>
> Mo
>
> On Feb 18, 2012, at 2:05 PM, Russell Roy wrote:
>
>> Mo,
>>
>> Thanks for taking the time to respond.
>>
>> I'd already taken the step of turning on the TCLBLEND_DEBUG. Unfortunately, the last debug output prior to the crash provided no new information - just that JavaCmdProc had been called.
>>
>> I will poke around a bit more in the open source Jetty HttpClient code to see if I can discern anything there. Yes, there is a new thread kicked off in there. I'd gone so far as to put some println's in that code to see if I could narrow the focus. That seems to indicate we're making it all the way through the HttpClient start method in the main thread and crash upon return into tclblend...but i may be misinterpreting (i don't pretend to know what i'm doing when it comes to the threaded world.) The most solid info I got was running it in gdb which showed the underlying cause of the failed tclblend assert as sigsev while switching threads.
>>
>> One other clue: I'm running the exact same script in jtclsh and jaclsh. What is it telling us that this crash occurs in jtclsh instance but runs cleanly in jaclsh?
>>
>> Any hope that the problem might just 'go away' were I to find a way to do my tclblend in tcl8.5 (where the thread implementation is part of the tcl core) as opposed to the current external thread pkg?
>>
>> Russell
>>
>> On Fri, Feb 17, 2012 at 2:09 PM, Mo DeJong <mo...@mo...> wrote:
>> Hi Russell
>>
>> So, this has something to do with threads. The specific assert you are running into is in JavaGetCache()
>>
>> http://tcljava.cvs.sourceforge.net/viewvc/tcljava/tcljava/src/native/javaCmd.c?revision=1.27&view=markup
>>
>> See line 398:
>>
>>
>> 393 TCLBLEND_EXTERN JavaInfo*
>> 394 JavaGetCache()
>> 395 {
>> 396 ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
>> 397
>> 398 assert(tsdPtr->initialized);
>> 399
>> 400 return &(tsdPtr->jcache);
>> 401 }
>>
>>
>> So, this assert is being hit because the Java code calls into Tcl Blend and then Tcl Blend checks to see if the thread specific data has been initialized in this thread. That assert is failing for unknown reasons.
>>
>> My first thought would be to check to see if the Java code in your HttpClient is actually creating another background thread and then invoking Tcl Blend methods in that other background thread. That would be the most likely cause of the assert. It is quite honestly hard to track down Tcl Blend problems in gdb, it is possible, but not easy because Java calls into C and vice versa. It is possible to set breakpoints in the Tcl Blend C code, but it takes some gdb mojo.
>>
>> You can also enable the TCLBLEND_DEBUG macro and create a build that will print debug and init messages as it is loaded. This is a lot easier way to debug these issues compared to using gdb.
>>
>> As far as the class loading issue goes, it does seem very odd. What I would do is try to "exec javap CLASS" and see if you can invoke the JVM with the specific classpath you are using. If you can't get the JDK tools to read from that classpath, then that is the source of your problem. Also, make sure the classpath being used in Jacl is exactly the same as the one being used in Tcl Blend (aside from jacl.jar vs tclblend.jar).
>>
>> Mo
>>
>> On Feb 16, 2012, at 12:20 PM, Russell Roy wrote:
>>
>> > I have a simple script. It works w/o error in jaclsh. It core dumps in jtclsh.
>> >
>> > Here's the script:
>> >
>> > 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..."
>> > 2 package require java
>> > 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient]
>> > 4 $httpClient start
>> >
>> > The script crashes in jtclsh on line 4 with this message:
>> >
>> > tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398: JavaGetCache: Assertion `tsdPtr->initialized' failed.
>> > Aborted (core dumped)
>> >
>> > That's the whole of the output when the thing dies.
>> >
>> >
>> > I was hoping to be able to do some java debugging by running the script in jaclsh but, as I said, the thing works fine there - no problem, no crash. I really need this to work in jctlsh.
>> >
>> >
>> > I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and thread2.6.5, tcl 8.4.19 (I also tried various permutations and combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend, all w/o any luck.)
>> >
>> > I've rebuilt and and re-installed tclBlend cleanly with each change so as to ensure consistency and jaclsh and jtclsh are setting up a correct environment but the problem persists.
>> >
>> > I stuck the core image in gdb but I there's was nothing discernibly useful, to me anyways (I believe the failed assertion is forcing the core dump.)
>> >
>> >
>> > I've run out of ideas on how to debug this.
>> >
>> >
>> > Russ
>> >
>> > PS: For what it's worth ... The HttpClient of above comes in two flavors - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I happened to discover through trial and error that if I configure the client as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh. That's interesting but it doesn't help me because I need to run in it as select channel.
>> >
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > Virtualization & Cloud Management Using Capacity Planning
>> > Cloud computing makes use of virtualization - but cloud computing
>> > also focuses on allowing computing to be delivered as a service.
>> > http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________
>> > tcljava-user mailing list
>> > tcl...@li...
>> > https://lists.sourceforge.net/lists/listinfo/tcljava-user
>>
>>
>
>
> <tclblend.log>
|
|
From: Russell R. <rus...@gm...> - 2012-02-20 22:17:47
|
Mo,
Ok, so thanks for that explanation.
I've attached a log w/ TCBLEND_DEBUG enabled. I must have a different
version of tclblend than what you quoted below (I'd pulled the latest
sources directly from the tree at sourceforge ...as opposed to the
prepackaged. I don't have sources for tclblend.jar.) as I don't see the
explicit "Calling Tcl_CreateInterp) ... but, no matter I do see ouput
related to JavaSetupJava success and we do get off the ground properly.
The point you make is that I need to see *two* of these, when in fact I
only see one.
I hope this is not getting into too much detail but HttpClient gets run on
a separate thread. It *hasA* SocketConnector or a SelectChannelConnector.
These in turn simulate multithreading within a single java thread by
means of a synchronous dispatcher ("dispatch") - one for each HttpClient
connection attempt:
[rroy@deepwater client]$ pwd
/home/rroy/jetty-all-8.1.0.v20120127-sources/org/eclipse/jetty/client
[rroy@deepwater client]$ grep "run(" *
HttpClient.java: public void run()
SocketConnector.java: public void run()
[rroy@deepwater client]$
[rroy@deepwater client]$ grep dispatch *
HttpClient.java: _threadPool.dispatch(new Runnable()
SelectConnector.java: public boolean dispatch(Runnable task)
SelectConnector.java: return
_httpClient._threadPool.dispatch(task);
SocketConnector.java: _httpClient.getThreadPool().dispatch(new
Runnable()
[rroy@deepwater client]$
Obviously, being third party code, they know nothing about tclblend.
Now, as it happens, this (Jetty) is *open source* so I could, in theory,
get in there and start mucking about to insure that the appropriate
per-thread tclblend init takes place (I have no idea the implications of
"dispatch") but this seems pretty ugly to me. And what would one do
with a *closed* third-party package for which threading was an issue? Is
it too strong a statement to say that tclblend has limited utility when it
comes to java threading?
Whereas I know the javclsh has not experienced this crash for my
application I guess I'd be more inclined to try to make that solution work
for me. My problem there though is I need to be able to pull in some
other Tcl packages like Expect, Itcl, etc and it wasn't clear to me whether
jaclsh was capable of loading any legal Tcl package in the same manner as
the "normal" tcl interpreter (I notice you use XpUtils::iload rather than
load .... i'm a bit fuzzy on that.)
Anywho ... I think we're coming to the end of the road on this issue. I
appreciate your advice.
Russell
On Sun, Feb 19, 2012 at 10:48 PM, Mo DeJong <mo...@mo...> wrote:
> So, I am almost 100% sure that the issue is with the fact that Tcl Blend
> is not getting initialized in that secondary thread that your Java library
> is creating.
>
> Here is the related code that gets invoked when Interp() is called from
> Java code.
>
> jlong JNICALL
> Java_tcl_lang_Interp_create(
> JNIEnv *env, /* Java environment. */
> jobject interpObj) /* Handle to Interp object. */
> {
> jlong lvalue;
> Tcl_Interp *interp;
>
> #ifdef TCLBLEND_DEBUG
> fprintf(stderr, "TCLBLEND_DEBUG: Calling Tcl_CreateInterp()\n");
> #endif /* TCLBLEND_DEBUG */
>
> interp = Tcl_CreateInterp();
> if (JavaSetupJava(env, interp) != TCL_OK) {
> jclass err = (*env)->FindClass(env, "tcl/lang/TclRuntimeError");
> if (err) {
> (*env)->ThrowNew(env, err, Tcl_GetStringResult(interp));
> (*env)->DeleteLocalRef(env, err);
> }
> Tcl_DeleteInterp(interp);
> lvalue = 0;
> } else {
> lvalue = 0;
> *(Tcl_Interp**)&lvalue = interp;
> }
> return lvalue;
> }
>
> That call to JavaSetupJava() will init the thread specific data that Tcl
> Blend needs. In your case, this init is not getting done. My guess would be
> that what is going on is that you created the Interp Java object in one
> thread, but then you pass it to another thread and try to invoke methods in
> that other thread. That will not work for a Tcl Blend interp because the
> interp object needs to be created in the same thread where it will be used
> used. This would typically work with a Java object in Jacl, but Tcl Blend
> is much more strict about how objects are used from threads. Could you take
> a look at your code and make sure the interp logic is getting invoked from
> the same thread that originally created the specific Interp object.
>
> Mo
>
> On Feb 18, 2012, at 2:05 PM, Russell Roy wrote:
>
> Mo,
>
> Thanks for taking the time to respond.
>
> I'd already taken the step of turning on the TCLBLEND_DEBUG.
> Unfortunately, the last debug output prior to the crash provided no new
> information - just that JavaCmdProc had been called.
>
> I will poke around a bit more in the open source Jetty HttpClient code to
> see if I can discern anything there. Yes, there is a new thread kicked
> off in there. I'd gone so far as to put some println's in that code to
> see if I could narrow the focus. That seems to indicate we're making it
> all the way through the HttpClient start method in the main thread and
> crash upon return into tclblend...but i may be misinterpreting (i don't
> pretend to know what i'm doing when it comes to the threaded world.) The
> most solid info I got was running it in gdb which showed the underlying
> cause of the failed tclblend assert as sigsev while switching threads.
>
> One other clue: I'm running the exact same script in jtclsh and jaclsh.
> What is it telling us that this crash occurs in jtclsh instance but runs
> cleanly in jaclsh?
>
> Any hope that the problem might just 'go away' were I to find a way to do
> my tclblend in tcl8.5 (where the thread implementation is part of the tcl
> core) as opposed to the current external thread pkg?
>
> Russell
>
> On Fri, Feb 17, 2012 at 2:09 PM, Mo DeJong <mo...@mo...> wrote:
>
>> Hi Russell
>>
>> So, this has something to do with threads. The specific assert you are
>> running into is in JavaGetCache()
>>
>>
>> http://tcljava.cvs.sourceforge.net/viewvc/tcljava/tcljava/src/native/javaCmd.c?revision=1.27&view=markup
>>
>> See line 398:
>>
>>
>> 393 TCLBLEND_EXTERN JavaInfo*
>> 394 JavaGetCache()
>> 395 {
>> 396 ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
>> 397
>> 398 assert(tsdPtr->initialized);
>> 399
>> 400 return &(tsdPtr->jcache);
>> 401 }
>>
>>
>> So, this assert is being hit because the Java code calls into Tcl Blend
>> and then Tcl Blend checks to see if the thread specific data has been
>> initialized in this thread. That assert is failing for unknown reasons.
>>
>> My first thought would be to check to see if the Java code in your
>> HttpClient is actually creating another background thread and then invoking
>> Tcl Blend methods in that other background thread. That would be the most
>> likely cause of the assert. It is quite honestly hard to track down Tcl
>> Blend problems in gdb, it is possible, but not easy because Java calls into
>> C and vice versa. It is possible to set breakpoints in the Tcl Blend C
>> code, but it takes some gdb mojo.
>>
>> You can also enable the TCLBLEND_DEBUG macro and create a build that will
>> print debug and init messages as it is loaded. This is a lot easier way to
>> debug these issues compared to using gdb.
>>
>> As far as the class loading issue goes, it does seem very odd. What I
>> would do is try to "exec javap CLASS" and see if you can invoke the JVM
>> with the specific classpath you are using. If you can't get the JDK tools
>> to read from that classpath, then that is the source of your problem. Also,
>> make sure the classpath being used in Jacl is exactly the same as the one
>> being used in Tcl Blend (aside from jacl.jar vs tclblend.jar).
>>
>> Mo
>>
>> On Feb 16, 2012, at 12:20 PM, Russell Roy wrote:
>>
>> > I have a simple script. It works w/o error in jaclsh. It core dumps
>> in jtclsh.
>> >
>> > Here's the script:
>> >
>> > 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..."
>> > 2 package require java
>> > 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient]
>> > 4 $httpClient start
>> >
>> > The script crashes in jtclsh on line 4 with this message:
>> >
>> > tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398:
>> JavaGetCache: Assertion `tsdPtr->initialized' failed.
>> > Aborted (core dumped)
>> >
>> > That's the whole of the output when the thing dies.
>> >
>> >
>> > I was hoping to be able to do some java debugging by running the script
>> in jaclsh but, as I said, the thing works fine there - no problem, no
>> crash. I really need this to work in jctlsh.
>> >
>> >
>> > I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and
>> thread2.6.5, tcl 8.4.19 (I also tried various permutations and
>> combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend,
>> all w/o any luck.)
>> >
>> > I've rebuilt and and re-installed tclBlend cleanly with each change so
>> as to ensure consistency and jaclsh and jtclsh are setting up a correct
>> environment but the problem persists.
>> >
>> > I stuck the core image in gdb but I there's was nothing discernibly
>> useful, to me anyways (I believe the failed assertion is forcing the core
>> dump.)
>> >
>> >
>> > I've run out of ideas on how to debug this.
>> >
>> >
>> > Russ
>> >
>> > PS: For what it's worth ... The HttpClient of above comes in two
>> flavors - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I
>> happened to discover through trial and error that if I configure the client
>> as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh.
>> That's interesting but it doesn't help me because I need to run in it as
>> select channel.
>> >
>> >
>> >
>> >
>> ------------------------------------------------------------------------------
>> > Virtualization & Cloud Management Using Capacity Planning
>> > Cloud computing makes use of virtualization - but cloud computing
>> > also focuses on allowing computing to be delivered as a service.
>> >
>> http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________
>> > tcljava-user mailing list
>> > tcl...@li...
>> > https://lists.sourceforge.net/lists/listinfo/tcljava-user
>>
>>
>
>
|
|
From: Mo D. <mo...@mo...> - 2012-02-20 03:48:28
|
So, I am almost 100% sure that the issue is with the fact that Tcl Blend is not getting initialized in that secondary thread that your Java library is creating.
Here is the related code that gets invoked when Interp() is called from Java code.
jlong JNICALL
Java_tcl_lang_Interp_create(
JNIEnv *env, /* Java environment. */
jobject interpObj) /* Handle to Interp object. */
{
jlong lvalue;
Tcl_Interp *interp;
#ifdef TCLBLEND_DEBUG
fprintf(stderr, "TCLBLEND_DEBUG: Calling Tcl_CreateInterp()\n");
#endif /* TCLBLEND_DEBUG */
interp = Tcl_CreateInterp();
if (JavaSetupJava(env, interp) != TCL_OK) {
jclass err = (*env)->FindClass(env, "tcl/lang/TclRuntimeError");
if (err) {
(*env)->ThrowNew(env, err, Tcl_GetStringResult(interp));
(*env)->DeleteLocalRef(env, err);
}
Tcl_DeleteInterp(interp);
lvalue = 0;
} else {
lvalue = 0;
*(Tcl_Interp**)&lvalue = interp;
}
return lvalue;
}
That call to JavaSetupJava() will init the thread specific data that Tcl Blend needs. In your case, this init is not getting done. My guess would be that what is going on is that you created the Interp Java object in one thread, but then you pass it to another thread and try to invoke methods in that other thread. That will not work for a Tcl Blend interp because the interp object needs to be created in the same thread where it will be used used. This would typically work with a Java object in Jacl, but Tcl Blend is much more strict about how objects are used from threads. Could you take a look at your code and make sure the interp logic is getting invoked from the same thread that originally created the specific Interp object.
Mo
On Feb 18, 2012, at 2:05 PM, Russell Roy wrote:
> Mo,
>
> Thanks for taking the time to respond.
>
> I'd already taken the step of turning on the TCLBLEND_DEBUG. Unfortunately, the last debug output prior to the crash provided no new information - just that JavaCmdProc had been called.
>
> I will poke around a bit more in the open source Jetty HttpClient code to see if I can discern anything there. Yes, there is a new thread kicked off in there. I'd gone so far as to put some println's in that code to see if I could narrow the focus. That seems to indicate we're making it all the way through the HttpClient start method in the main thread and crash upon return into tclblend...but i may be misinterpreting (i don't pretend to know what i'm doing when it comes to the threaded world.) The most solid info I got was running it in gdb which showed the underlying cause of the failed tclblend assert as sigsev while switching threads.
>
> One other clue: I'm running the exact same script in jtclsh and jaclsh. What is it telling us that this crash occurs in jtclsh instance but runs cleanly in jaclsh?
>
> Any hope that the problem might just 'go away' were I to find a way to do my tclblend in tcl8.5 (where the thread implementation is part of the tcl core) as opposed to the current external thread pkg?
>
> Russell
>
> On Fri, Feb 17, 2012 at 2:09 PM, Mo DeJong <mo...@mo...> wrote:
> Hi Russell
>
> So, this has something to do with threads. The specific assert you are running into is in JavaGetCache()
>
> http://tcljava.cvs.sourceforge.net/viewvc/tcljava/tcljava/src/native/javaCmd.c?revision=1.27&view=markup
>
> See line 398:
>
>
> 393 TCLBLEND_EXTERN JavaInfo*
> 394 JavaGetCache()
> 395 {
> 396 ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
> 397
> 398 assert(tsdPtr->initialized);
> 399
> 400 return &(tsdPtr->jcache);
> 401 }
>
>
> So, this assert is being hit because the Java code calls into Tcl Blend and then Tcl Blend checks to see if the thread specific data has been initialized in this thread. That assert is failing for unknown reasons.
>
> My first thought would be to check to see if the Java code in your HttpClient is actually creating another background thread and then invoking Tcl Blend methods in that other background thread. That would be the most likely cause of the assert. It is quite honestly hard to track down Tcl Blend problems in gdb, it is possible, but not easy because Java calls into C and vice versa. It is possible to set breakpoints in the Tcl Blend C code, but it takes some gdb mojo.
>
> You can also enable the TCLBLEND_DEBUG macro and create a build that will print debug and init messages as it is loaded. This is a lot easier way to debug these issues compared to using gdb.
>
> As far as the class loading issue goes, it does seem very odd. What I would do is try to "exec javap CLASS" and see if you can invoke the JVM with the specific classpath you are using. If you can't get the JDK tools to read from that classpath, then that is the source of your problem. Also, make sure the classpath being used in Jacl is exactly the same as the one being used in Tcl Blend (aside from jacl.jar vs tclblend.jar).
>
> Mo
>
> On Feb 16, 2012, at 12:20 PM, Russell Roy wrote:
>
> > I have a simple script. It works w/o error in jaclsh. It core dumps in jtclsh.
> >
> > Here's the script:
> >
> > 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..."
> > 2 package require java
> > 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient]
> > 4 $httpClient start
> >
> > The script crashes in jtclsh on line 4 with this message:
> >
> > tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398: JavaGetCache: Assertion `tsdPtr->initialized' failed.
> > Aborted (core dumped)
> >
> > That's the whole of the output when the thing dies.
> >
> >
> > I was hoping to be able to do some java debugging by running the script in jaclsh but, as I said, the thing works fine there - no problem, no crash. I really need this to work in jctlsh.
> >
> >
> > I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and thread2.6.5, tcl 8.4.19 (I also tried various permutations and combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend, all w/o any luck.)
> >
> > I've rebuilt and and re-installed tclBlend cleanly with each change so as to ensure consistency and jaclsh and jtclsh are setting up a correct environment but the problem persists.
> >
> > I stuck the core image in gdb but I there's was nothing discernibly useful, to me anyways (I believe the failed assertion is forcing the core dump.)
> >
> >
> > I've run out of ideas on how to debug this.
> >
> >
> > Russ
> >
> > PS: For what it's worth ... The HttpClient of above comes in two flavors - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I happened to discover through trial and error that if I configure the client as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh. That's interesting but it doesn't help me because I need to run in it as select channel.
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Virtualization & Cloud Management Using Capacity Planning
> > Cloud computing makes use of virtualization - but cloud computing
> > also focuses on allowing computing to be delivered as a service.
> > http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________
> > tcljava-user mailing list
> > tcl...@li...
> > https://lists.sourceforge.net/lists/listinfo/tcljava-user
>
>
|
|
From: Russell R. <rus...@gm...> - 2012-02-18 22:05:49
|
Mo, Thanks for taking the time to respond. I'd already taken the step of turning on the TCLBLEND_DEBUG. Unfortunately, the last debug output prior to the crash provided no new information - just that JavaCmdProc had been called. I will poke around a bit more in the open source Jetty HttpClient code to see if I can discern anything there. Yes, there is a new thread kicked off in there. I'd gone so far as to put some println's in that code to see if I could narrow the focus. That seems to indicate we're making it all the way through the HttpClient start method in the main thread and crash upon return into tclblend...but i may be misinterpreting (i don't pretend to know what i'm doing when it comes to the threaded world.) The most solid info I got was running it in gdb which showed the underlying cause of the failed tclblend assert as sigsev while switching threads. One other clue: I'm running the exact same script in jtclsh and jaclsh. What is it telling us that this crash occurs in jtclsh instance but runs cleanly in jaclsh? Any hope that the problem might just 'go away' were I to find a way to do my tclblend in tcl8.5 (where the thread implementation is part of the tcl core) as opposed to the current external thread pkg? Russell On Fri, Feb 17, 2012 at 2:09 PM, Mo DeJong <mo...@mo...> wrote: > Hi Russell > > So, this has something to do with threads. The specific assert you are > running into is in JavaGetCache() > > > http://tcljava.cvs.sourceforge.net/viewvc/tcljava/tcljava/src/native/javaCmd.c?revision=1.27&view=markup > > See line 398: > > > 393 TCLBLEND_EXTERN JavaInfo* > 394 JavaGetCache() > 395 { > 396 ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); > 397 > 398 assert(tsdPtr->initialized); > 399 > 400 return &(tsdPtr->jcache); > 401 } > > > So, this assert is being hit because the Java code calls into Tcl Blend > and then Tcl Blend checks to see if the thread specific data has been > initialized in this thread. That assert is failing for unknown reasons. > > My first thought would be to check to see if the Java code in your > HttpClient is actually creating another background thread and then invoking > Tcl Blend methods in that other background thread. That would be the most > likely cause of the assert. It is quite honestly hard to track down Tcl > Blend problems in gdb, it is possible, but not easy because Java calls into > C and vice versa. It is possible to set breakpoints in the Tcl Blend C > code, but it takes some gdb mojo. > > You can also enable the TCLBLEND_DEBUG macro and create a build that will > print debug and init messages as it is loaded. This is a lot easier way to > debug these issues compared to using gdb. > > As far as the class loading issue goes, it does seem very odd. What I > would do is try to "exec javap CLASS" and see if you can invoke the JVM > with the specific classpath you are using. If you can't get the JDK tools > to read from that classpath, then that is the source of your problem. Also, > make sure the classpath being used in Jacl is exactly the same as the one > being used in Tcl Blend (aside from jacl.jar vs tclblend.jar). > > Mo > > On Feb 16, 2012, at 12:20 PM, Russell Roy wrote: > > > I have a simple script. It works w/o error in jaclsh. It core dumps in > jtclsh. > > > > Here's the script: > > > > 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..." > > 2 package require java > > 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient] > > 4 $httpClient start > > > > The script crashes in jtclsh on line 4 with this message: > > > > tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398: > JavaGetCache: Assertion `tsdPtr->initialized' failed. > > Aborted (core dumped) > > > > That's the whole of the output when the thing dies. > > > > > > I was hoping to be able to do some java debugging by running the script > in jaclsh but, as I said, the thing works fine there - no problem, no > crash. I really need this to work in jctlsh. > > > > > > I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and > thread2.6.5, tcl 8.4.19 (I also tried various permutations and > combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend, > all w/o any luck.) > > > > I've rebuilt and and re-installed tclBlend cleanly with each change so > as to ensure consistency and jaclsh and jtclsh are setting up a correct > environment but the problem persists. > > > > I stuck the core image in gdb but I there's was nothing discernibly > useful, to me anyways (I believe the failed assertion is forcing the core > dump.) > > > > > > I've run out of ideas on how to debug this. > > > > > > Russ > > > > PS: For what it's worth ... The HttpClient of above comes in two > flavors - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I > happened to discover through trial and error that if I configure the client > as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh. > That's interesting but it doesn't help me because I need to run in it as > select channel. > > > > > > > > > ------------------------------------------------------------------------------ > > Virtualization & Cloud Management Using Capacity Planning > > Cloud computing makes use of virtualization - but cloud computing > > also focuses on allowing computing to be delivered as a service. > > > http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________ > > tcljava-user mailing list > > tcl...@li... > > https://lists.sourceforge.net/lists/listinfo/tcljava-user > > |
|
From: Mo D. <mo...@mo...> - 2012-02-18 06:22:20
|
Hi Russell So, this has something to do with threads. The specific assert you are running into is in JavaGetCache() http://tcljava.cvs.sourceforge.net/viewvc/tcljava/tcljava/src/native/javaCmd.c?revision=1.27&view=markup See line 398: 393 TCLBLEND_EXTERN JavaInfo* 394 JavaGetCache() 395 { 396 ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); 397 398 assert(tsdPtr->initialized); 399 400 return &(tsdPtr->jcache); 401 } So, this assert is being hit because the Java code calls into Tcl Blend and then Tcl Blend checks to see if the thread specific data has been initialized in this thread. That assert is failing for unknown reasons. My first thought would be to check to see if the Java code in your HttpClient is actually creating another background thread and then invoking Tcl Blend methods in that other background thread. That would be the most likely cause of the assert. It is quite honestly hard to track down Tcl Blend problems in gdb, it is possible, but not easy because Java calls into C and vice versa. It is possible to set breakpoints in the Tcl Blend C code, but it takes some gdb mojo. You can also enable the TCLBLEND_DEBUG macro and create a build that will print debug and init messages as it is loaded. This is a lot easier way to debug these issues compared to using gdb. As far as the class loading issue goes, it does seem very odd. What I would do is try to "exec javap CLASS" and see if you can invoke the JVM with the specific classpath you are using. If you can't get the JDK tools to read from that classpath, then that is the source of your problem. Also, make sure the classpath being used in Jacl is exactly the same as the one being used in Tcl Blend (aside from jacl.jar vs tclblend.jar). Mo On Feb 16, 2012, at 12:20 PM, Russell Roy wrote: > I have a simple script. It works w/o error in jaclsh. It core dumps in jtclsh. > > Here's the script: > > 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..." > 2 package require java > 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient] > 4 $httpClient start > > The script crashes in jtclsh on line 4 with this message: > > tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398: JavaGetCache: Assertion `tsdPtr->initialized' failed. > Aborted (core dumped) > > That's the whole of the output when the thing dies. > > > I was hoping to be able to do some java debugging by running the script in jaclsh but, as I said, the thing works fine there - no problem, no crash. I really need this to work in jctlsh. > > > I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and thread2.6.5, tcl 8.4.19 (I also tried various permutations and combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend, all w/o any luck.) > > I've rebuilt and and re-installed tclBlend cleanly with each change so as to ensure consistency and jaclsh and jtclsh are setting up a correct environment but the problem persists. > > I stuck the core image in gdb but I there's was nothing discernibly useful, to me anyways (I believe the failed assertion is forcing the core dump.) > > > I've run out of ideas on how to debug this. > > > Russ > > PS: For what it's worth ... The HttpClient of above comes in two flavors - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I happened to discover through trial and error that if I configure the client as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh. That's interesting but it doesn't help me because I need to run in it as select channel. > > > > ------------------------------------------------------------------------------ > Virtualization & Cloud Management Using Capacity Planning > Cloud computing makes use of virtualization - but cloud computing > also focuses on allowing computing to be delivered as a service. > http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________ > tcljava-user mailing list > tcl...@li... > https://lists.sourceforge.net/lists/listinfo/tcljava-user |
|
From: Russell R. <rus...@gm...> - 2012-02-17 17:19:21
|
More info...
I used the tclBlend debug target ("make debug") and got dropped into gdb
with jctlsh loaded. Ran my script and got this:
% run /home/rroy/word-cometd/bayeux
...
$httpClient start
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208981824 (LWP 25345)]
0xb5392e6e in ?? ()
(gdb)
On Thu, Feb 16, 2012 at 3:20 PM, Russell Roy <rus...@gm...> wrote:
> I have a simple script. It works w/o error in jaclsh. It core dumps in
> jtclsh.
>
> Here's the script:
>
> 1 set env(TCL_CLASSPATH) "...some-big-long-classpath..."
> 2 package require java
> 3 set httpClient [java::new org.eclipse.jetty.client.HttpClient]
> 4 $httpClient start
>
> The script crashes in jtclsh on line 4 with this message:
>
> tclsh8.4: /home/rroy/tcljava/src/native/javaCmd.c:398:
> JavaGetCache: Assertion `tsdPtr->initialized' failed.
> Aborted (core dumped)
>
> That's the whole of the output when the thing dies.
>
>
> I was hoping to be able to do some java debugging by running the script in
> jaclsh but, as I said, the thing works fine there - no problem, no crash.
> I really need this to work in jctlsh.
>
>
> I'm using tclBlend 1.4.1 pulled from latest at sourceforge, and
> thread2.6.5, tcl 8.4.19 (I also tried various permutations and
> combinations of thread2.6.3, tcl8.4.13 and earlier versions of tclBlend,
> all w/o any luck.)
>
> I've rebuilt and and re-installed tclBlend cleanly with each change so as
> to ensure consistency and jaclsh and jtclsh are setting up a correct
> environment but the problem persists.
>
> I stuck the core image in gdb but I there's was nothing discernibly
> useful, to me anyways (I believe the failed assertion is forcing the core
> dump.)
>
>
> I've run out of ideas on how to debug this.
>
>
> Russ
>
> PS: For what it's worth ... The HttpClient of above comes in two flavors
> - CONNECTOR_SOCKET and CONNECTOR_SELECT_CHANNEL (the default). I happened
> to discover through trial and error that if I configure the client
> as CONNECTOR_SOCKET before I do the start then it runs w/o error in jtclsh.
> That's interesting but it doesn't help me because I need to run in it as
> select channel.
>
>
>
>
|
|
From: Russell R. <rus...@gm...> - 2012-02-17 16:33:05
|
% set httpClient [java::new org.eclipse.jetty.client.HttpClient]
java0x10
% set httpClients [java::new {org.eclipse.jetty.client.HttpClient[]} 2 {}]
unknown class "org.eclipse.jetty.client.HttpClient"
%
I don't understand how classpath can be ok in creating a single instance
then be the cause of "unknown" in attempting to create the array instance.
On Wed, Feb 15, 2012 at 3:14 PM, Mo DeJong <mo...@mo...> wrote:
> For the first issue, it may be the case that your ClientTransport class
> can be loaded, but some other class that it depends on fails to load then
> you try to init an instance of the object. These types of problems are
> always caused by the CLASSPATH being set incorrectly. So, that would be the
> first thing to try.
>
> Sorry, I don't know about the ... syntax, Jacl and Tcl Blend don't do
> anything to try to deal with that new syntax.
>
> Mo DeJong
>
> On Feb 12, 2012, at 10:57 AM, Russell Roy wrote:
>
> Two things:
>
> 1) Problem w/ arrays...
>
> This works ok:
>
> % set arrayObj [java::new {int[]} 5 {11 12 99 14 15}]
> java0x4
>
> # this cast works ok too thus demonstrating that my class name is valid
> % set clientTransport [java::cast *
> org.cometd.client.transport.ClientTransport* $transport]
> java0x3
>
> But when I try to use that classname to create an array of these in the
> same manner as int objects...
>
> % set clientTransports [java::new {*
> org.cometd.client.transport.ClientTransport*[]} 1 $clientTransport]
> unknown class "org.cometd.client.transport.ClientTransport"
> %
>
> I didn't expect that result and I don't know how to correct.
>
>
> 2) Thing 2. A certain class constructor takes a *variable length *argument
> list. Here's the signature:
>
> *BayeuxClient<http://docs.cometd.org/apidocs/org/cometd/client/BayeuxClient.html#BayeuxClient%28java.lang.String,%20org.cometd.client.transport.ClientTransport,%20org.cometd.client.transport.ClientTransport...%29>
> *(String<http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true>
> url, ClientTransport<http://docs.cometd.org/apidocs/org/cometd/client/transport/ClientTransport.html>
> transport, ClientTransport<http://docs.cometd.org/apidocs/org/cometd/client/transport/ClientTransport.html>
> ... transports)
> Creates a BayeuxClient<http://docs.cometd.org/apidocs/org/cometd/client/BayeuxClient.html> that
> will connect to the Bayeux server at the given URL and with the given
> transport(s).
>
>
>
> % set client [java::new org.cometd.client.BayeuxClient http:://
> 172.30.12.75:8080/cometd $clientTransport]
> can't find accessible constructor with 2 argument(s) for class
> "org.cometd.client.BayeuxClient"
>
>
> Again, I didn't expect that result and don't know how to rephrase it in
> tclblend parlance to satisfy the complaint.
>
>
> Thanks in advance for any guidance you may be able to provide.
>
> - Russ Roy
>
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> Virtualization & Cloud Management Using Capacity Planning
> Cloud computing makes use of virtualization - but cloud computing
> also focuses on allowing computing to be delivered as a service.
>
> http://www.accelacomm.com/jaw/sfnl/114/51521223/_______________________________________________
> tcljava-user mailing list
> tcl...@li...
> https://lists.sourceforge.net/lists/listinfo/tcljava-user
>
>
>
|
|
From: Patnaik, A. <APa...@ci...> - 2012-02-16 22:58:56
|
Hello, I have tcl 8.4.19 and tclblend which is compiled with Jdk 1.6. I'd like to know if it's possible to start up a very lightweight http server that just listens to requests on a specific port and displays the xml string. The client that connects to this server is supposed to send it a XML string containing an event every 30 secs. The server just needs to receive the GET, and dump the XML string. Any snippets appreciated. Thanks! |