Anonymous | Login | 04-12-2021 16:34 UTC |
Main | My View | View Issues | Change Log | Docs |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | ||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | ||||
0005245 | [Squeak] Kernel | major | random | 10-16-06 13:33 | 10-17-06 12:45 | ||||
Reporter | mikevdg | View Status | public | ||||||
Assigned To | mikevdg | ||||||||
Priority | normal | Resolution | fixed | ||||||
Status | closed | Product Version | 3.8 | ||||||
Summary | 0005245: Delay class>>primitiveFailed | ||||||||
Description |
Any help in diagnosing the problem is appreciated. At random occasions after running my code, I get the above error. The image freezes, consumes 100% CPU and cannot be interupted with ALT-. The stack trace is in the attached screenshot. I have seen this error on Linux and Windows in multiple VM versions. Currently I am using: mikevdg@neb:~/dpon$ ./squeak -version 3.9-7 #1 Tue Jul 4 11:12:22 NZST 2006 gcc 4.0.2 Squeak3.9alpha of 4 July 2005 [latest update: 0007021] Linux neb 2.6.12-9-386 #1 Mon Oct 10 13:14:36 BST 2005 i686 GNU/Linux default plugin location: /home/mikevdg/squeak/vmmaker//lib/squeak/3.9-7/*.so |
||||||||
Additional Information | |||||||||
Attached Files |
![]() ![]() |
||||||||
|
![]() |
||||||
|
![]() |
|
(0007699 - 197 - 197 - 197 - 197 - 197 - 197) mikevdg 10-16-06 13:49 |
Reading through the VM source code (and using some guesswork), it appears that I'm not passing an integer to this primitive. Yet the attached SqueakDebug.log shows that I am passing a SmallInteger. |
(0007701 - 298 - 490 - 490 - 490 - 490 - 490) tim 10-16-06 19:29 |
Um, look at the delay value. Delay class>>primSignal:atMilliseconds: Receiver: Delay Arguments and temporary variables: aSemaphore: a Semaphore() aSmallInteger: 3321559286 That's not a SmallInteger. It's not a VM bug, it's a problem with worling out the resumption time properly. |
(0007702 - 280 - 316 - 316 - 316 - 316 - 316) mikevdg 10-17-06 02:48 |
Thanks, Tim! I forgot that SmallIntegers only go up to 2^31 (which is 2147483648) rather than 2^32. There are now two issues here: 1. Make that number is a SmallInteger. 2. Get Squeak to gracefully handle this case rather than freezing up. I'll have a crack at it tonight. |
(0007704 - 156 - 156 - 156 - 264 - 264 - 264) tim 10-17-06 04:04 |
See 0001840 and note that the fix was in 3.9-7026. Your crash claims to have been in 39.-7021 - so check the latest version and see if it solves your problem. |
(0007709 - 914 - 1075 - 1075 - 1075 - 1075 - 1075) mikevdg 10-17-06 12:39 |
Ha! I added an assertion to make sure that Delays weren't being made with anything but SmallIntegers. I caught the following: Delay(Object)>>assert: Delay>>setDelay:forSemaphore: Delay class>>timeoutSemaphore:afterMSecs: Semaphore>>waitTimeoutMSecs: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Socket>>waitForConnectionFor:ifTimedOut: Socket>>waitForConnectionFor: [] in VatManager>>loopOnPort: {[[running] whileTrue: [socket := Socket newTCP listenOn: port. socket w...]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]} My own code is the culprit: socket waitForConnectionFor: (Socket standardDeadline). Here, (Socket standardDeadline) returns a millisecond value. waitForConnectionFor: takes a number of seconds as an argument. Heh. It would be nice if the Delay class would check its arguments to make sure the primitive doesn't fail. |
(0007710 - 85 - 85 - 85 - 85 - 85 - 85) mikevdg 10-17-06 12:45 |
Appears to be fixed by Tim's changes in bug 1840. Changes already in Squeak 3.9-7026. |
Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
71 total queries executed. 48 unique queries executed. |