tonyg

tonyg

Member Since 13 years ago

Maastricht, Netherlands

Experience Points
398
follower
Lessons Completed
59
follow
Lessons Completed
313
stars
Best Reply Awards
187
repos

139 contributions in the last year

Pinned
⚡ syn·di·cate: a language for interactive programs
⚡ i386, x86_64, ARMv7 assembler/linker; Nothing-like mid-level language; Linear-scan register allocator; Operating system for Raspberry Pi
⚡ A dynamic, ReST-style means of enrolment and participation in an HTTP network; a dynamically-configurable "Remote CGI" service. Joining the World Wide Web as an HTTP server has been an ad-hoc, manual process. By using the protocol defined here, programs can provide services to the Web just as easily as they request services from the Web.
⚡ Pure-Javascript High-level API to Emscripten-compiled libsodium routines.
⚡ An EMACS written in Racket. Runs in ANSI-compatible terminals.
Activity
Jan
20
2 days ago
started
started time in 2 days ago
Jan
8
2 weeks ago
Activity icon
issue

tonyg issue comment rust-lang/rust

tonyg
tonyg

"no entry found for key" in metadata

Code

To reproduce:

  • Checkout https://github.com:nikomatsakis/dada.git with the branch issue-92667
  • Go to issue-92667^ and run cargo run -- run dada_tests/interpret/class-wrong-label.dada
  • Checkout issue-92667 and run same command again
  • For me, that reproduces

Not an MCE, I know.

Meta

rustc --version --verbose:

rustc 1.59.0-nightly (e012a191d 2022-01-06) running on x86_64-unknown-linux-gnu

Error output

athena! cargo run -- run dada_tests/interpret/class-wrong-label.dada
   Compiling dada-ir v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-ir)
   Compiling dada-manifest v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-manifest)
   Compiling dada-lex v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-lex)
   Compiling dada-error-format v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-error-format)
   Compiling dada-parse v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-parse)
   Compiling dada-validate v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-validate)
   Compiling dada-brew v0.1.0 (/home/nmatsakis/versioned/dada/components/dada-brew)
thread 'rustc' panicked at 'no entry found for key', compiler/rustc_metadata/src/rmeta/decoder.rs:1617:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.59.0-nightly (e012a191d 2022-01-06) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [type_of] computing type of `brewery::LoopContext::loop_value`
#1 [inferred_outlives_crate] computing the inferred outlives predicates for items in this crate
end of query stack
error: could not compile `dada-brew`
warning: build failed, waiting for other jobs to finish...
error: build failed
Backtrace

stack backtrace:
   0: rust_begin_unwind
             at /rustc/e012a191d768adeda1ee36a99ef8b92d51920154/library/std/src/panicking.rs:498:5
   1: core::panicking::panic_fmt
             at /rustc/e012a191d768adeda1ee36a99ef8b92d51920154/library/core/src/panicking.rs:107:14
   2: core::panicking::panic_display
             at /rustc/e012a191d768adeda1ee36a99ef8b92d51920154/library/core/src/panicking.rs:63:5
   3: core::panicking::panic_str
             at /rustc/e012a191d768adeda1ee36a99ef8b92d51920154/library/core/src/panicking.rs:55:5
   4: core::option::expect_failed
             at /rustc/e012a191d768adeda1ee36a99ef8b92d51920154/library/core/src/option.rs:1817:5
   5: <rustc_metadata::creader::CStore as rustc_session::cstore::CrateStore>::expn_hash_to_expn_id
   6: <rustc_span::hygiene::ExpnId as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
   7: <rustc_span::hygiene::SyntaxContextData as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
   8: <rustc_query_impl::on_disk_cache::CacheDecoder as rustc_middle::ty::codec::TyDecoder>::with_position::<<rustc_span::hygiene::SyntaxContext as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode::{closure#0}::{closure#0}, core::result::Result<rustc_span::hygiene::SyntaxContextData, alloc::string::String>>
   9: <rustc_span::span_encoding::Span as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
  10: <rustc_middle::ty::FieldDef as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
  11: <rustc_middle::ty::VariantDef as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
  12: <rustc_query_impl::on_disk_cache::CacheDecoder as rustc_serialize::serialize::Decoder>::read_seq::<alloc::vec::Vec<rustc_middle::ty::VariantDef>, <alloc::vec::Vec<rustc_middle::ty::VariantDef> as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode::{closure#0}>
  13: <rustc_middle::ty::adt::AdtDef as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
  14: <rustc_middle::ty::sty::TyKind as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
  15: <&rustc_middle::ty::TyS as rustc_serialize::serialize::Decodable<rustc_query_impl::on_disk_cache::CacheDecoder>>::decode
  16: <rustc_query_impl::on_disk_cache::OnDiskCache>::try_load_query_result::<&rustc_middle::ty::TyS>
  17: rustc_query_system::query::plumbing::try_load_from_disk_and_cache_in_memory::<rustc_query_impl::plumbing::QueryCtxt, rustc_span::def_id::DefId, &rustc_middle::ty::TyS>
  18: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::type_of
  19: <rustc_typeck::outlives::implicit_infer::InferVisitor as rustc_hir::itemlikevisit::ItemLikeVisitor>::visit_item
  20: <rustc_middle::hir::map::Map>::visit_all_item_likes::<rustc_typeck::outlives::implicit_infer::InferVisitor>
  21: rustc_typeck::outlives::inferred_outlives_crate
  22: <rustc_middle::dep_graph::dep_node::DepKind as rustc_query_system::dep_graph::DepKind>::with_deps::<<rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task_impl<rustc_middle::ty::context::TyCtxt, (), rustc_middle::ty::CratePredicatesMap>::{closure#0}, rustc_middle::ty::CratePredicatesMap>
  23: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, (), rustc_middle::ty::CratePredicatesMap>
  24: rustc_data_structures::stack::ensure_sufficient_stack::<(rustc_middle::ty::CratePredicatesMap, rustc_query_system::dep_graph::graph::DepNodeIndex), rustc_query_system::query::plumbing::execute_job<rustc_query_impl::plumbing::QueryCtxt, (), rustc_middle::ty::CratePredicatesMap>::{closure#3}>
  25: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::ArenaCache<(), rustc_middle::ty::CratePredicatesMap>>
  26: rustc_query_system::query::plumbing::force_query::<rustc_query_impl::queries::inferred_outlives_crate, rustc_query_impl::plumbing::QueryCtxt>
  27: rustc_query_impl::query_callbacks::inferred_outlives_crate::force_from_dep_node
  28: <rustc_middle::ty::context::TyCtxt as rustc_query_system::dep_graph::DepContext>::try_force_from_dep_node
  29: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  30: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  31: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  32: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::try_mark_previous_green::<rustc_query_impl::plumbing::QueryCtxt>
  33: rustc_query_system::query::plumbing::ensure_must_run::<rustc_query_impl::plumbing::QueryCtxt, rustc_span::def_id::LocalDefId, ()>
  34: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::collect_mod_item_types, rustc_query_impl::plumbing::QueryCtxt>
  35: <rustc_middle::hir::map::Map>::for_each_module::<rustc_typeck::check_crate::{closure#0}::{closure#0}::{closure#0}>
  36: <rustc_session::session::Session>::track_errors::<rustc_typeck::check_crate::{closure#0}, ()>
  37: rustc_typeck::check_crate
  38: rustc_interface::passes::analysis
  39: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, (), core::result::Result<(), rustc_errors::ErrorReported>>
  40: rustc_data_structures::stack::ensure_sufficient_stack::<(core::result::Result<(), rustc_errors::ErrorReported>, rustc_query_system::dep_graph::graph::DepNodeIndex), rustc_query_system::query::plumbing::execute_job<rustc_query_impl::plumbing::QueryCtxt, (), core::result::Result<(), rustc_errors::ErrorReported>>::{closure#3}>
  41: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), core::result::Result<(), rustc_errors::ErrorReported>>>
  42: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::analysis, rustc_query_impl::plumbing::QueryCtxt>
  43: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorReported>>
  44: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#1}>
  45: rustc_interface::interface::create_compiler_and_run::<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>
  46: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::setup_callbacks_and_run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorReported>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>::{closure#0}::{closure#0}, core::result::Result<(), rustc_errors::ErrorReported>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.59.0-nightly (e012a191d 2022-01-06) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=2 -C incremental --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [type_of] computing type of `brewery::LoopContext::loop_value`
#1 [inferred_outlives_crate] computing the inferred outlives predicates for items in this crate
#2 [analysis] running analysis passes on this crate
end of query stack
error: could not compile `dada-brew`

tonyg
tonyg

I'm getting the same thing. One workaround seems to be cargo clean (!) followed by cargo build.

Jan
5
2 weeks ago
pull request

tonyg pull request greydongilmore/blog

tonyg
tonyg

Link to original source.

I wrote the article you've copied here, and I'd appreciate it if you linked back to the original and acknowledged the connection. While I'm pleased that my article has been able to help so many people, I was sad to discover your plagiarism of it (via HN: https://news.ycombinator.com/item?id=29791490).

push

tonyg push tonyg/blog

tonyg
tonyg

commit sha: b23538f9dca9695fd89ffbe05c3b05527071d087

push time in 2 weeks ago
Activity icon
fork

tonyg forked greydongilmore/blog

tonyg Updated
fork time in 2 weeks ago
Dec
29
3 weeks ago
started
started time in 3 weeks ago
Dec
22
1 month ago
Activity icon
issue

tonyg issue comment OpenSmalltalk/opensmalltalk-vm

tonyg
tonyg

Illegal instruction `mrs x0, id_aa64isar0_el1` on aarch64 on older Linux kernels

I'm running Cog on aarch64, and because I have an old linux kernel (v3.18.140) which I cannot upgrade (it's a repurposed PostmarketOS Android device), Cog yields illegal instruction trying to execute mrs x0, id_aa64isar0_el1. This instruction is privileged, but later linux kernels trap and emulate it for userspace.

Given that it's currently only being used to detect presence of atomic instructions (self setHasAtomicInstructions: (idISAR0 >> 20 bitAnd: 2r1111) = 2r10), and there's a kernel API for retrieving that specific bit of information (https://www.kernel.org/doc/html/latest/arm64/elf_hwcaps.html suggests HWCAP_ATOMICS), perhaps instead of using the instruction directly Cog could call the relevant getauxval variant?

For now, I have the Stack VM running well on aarch64, so I can make progress, even if it is a little slower than it could be :-)

tonyg
tonyg

Just reporting back: running the latest Cog VM on aarch64 on PostmarketOS (i.e. Alpine) on Pinephone 1.2 works very well. No problems with illegal instructions. (I did have to mount -o remount,exec /dev/shm to allow the mprotect with PROT_EXEC to work, but other than that, no hitches.)

Dec
18
1 month ago
push

tonyg push tonyg/opensmalltalk-vm

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3108

Fix a crash in recursive invocations of primitive 118, [receiver:]tryPrimitive:withArgs:. This is a bit of a hack; nested primitive failure will not be unwound correctly in tgh eouter invocation. We may have to revisit this, but at least the simple case of 6 tryPrimitive: 118 withArgs: {9. {}} no longer crashes the VM.

CogProcessorAlien plugins: Implement a memory offset to allow the simulatorw to implement a null pointer trap by omitting the first word in simulated memory.

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3109

Cogit: add machine code versions of primitiveSlotAt[Put] (used for instVarAt:[put:] in Spur) for Spur64. This is mainly to reduce noise in Virtend crash log primitive traces, but is a lot faster.

Spur: Fix a bug in full GC with non-writable code zone. The scavenge that comes immediately before the mark phase in a full GC needs to be done with GCModeNewSpace to ensure the Cogit's GC routines are invoked correctly.

tonyg
tonyg

better framebuffer hookup

tonyg
tonyg

Merge pull request #606 from KenDickey/Cog

vm-display-fbdev fixes to integrate

tonyg
tonyg

Add (autoconf/configure) check for libevdev. Install libevdev for Linux(x86) on CI.

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3113

Image file i/o. Check result of sqImageFile:Open: with invalidSqImageFile:, instead of assming nill is the invalid value. This should address opensmalltalk-vm Issue #607.

StackInterpreter: Implement printing suspended processes in printAllStacks by searching the heap for all processes (including subinstances) waiting on other than a linked list. Hence nuke ClassMutex which specifies a slot in the specialObjectsArray which has never been used in production.

CoInterpreterMT: Override to printAllStacks also print the awol processes

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3114

Cogit: eliminate some C compiler warnings in the 64-bit cogits.

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3116

StackInterpreter: fix printAllStacks for v3. Do so by changing SpurMemoryManager>>allObjectsDoSafely: to use isNormalObject: (excluding forwarding pointers) rather than allObjectsDo:, which uses isEnumerableObject: (whcih includes forwarding pointers, and all the puns). This is good for allAccessibleObjectsOkay & checkAllAccessibleObjectsOkay which should indeed ignore things like the class table etc.

Spur: eliminate duplicate enableObjectEnumerationFrom:'s in both senders of allEntitiesFrom:do:.

Cogit: eliminate some C compiler warnings in the 64-bit cogits.

Slang: TMethod's writtenToGlobalVarsCache should be voided more agressively to ensure endOfMemory is inlined in allEntitiesFrom:do:.

tonyg
tonyg

CogVm source as per VMMaker.oscog-eem.3117

Cog ARMv8: Since id_aa64isar0_el1 is a priviledged instruction use getauxval on linux to derive the value(s) derived there-from, currenty whether atomic instructions are available or not. This addresses opensmalltalk-vm Issue #608.

tonyg
tonyg

src/plugins/SHA2Plugin/SHA2Plugin.c as per CryptographyPlugins-eem.24

Fix crashes in primitiveSHA256ProcessBufferUpdatingHash when compiling with Clang on x86_64 due to SSE instructions which require 128-bit stack alignment.

tonyg
tonyg

Cryptography Plugins as per CryptographyPlugins-mt.25/eem.27

Fix regressions in CryptographyPlugins-eem.23. Specifically alignment crashes in DESPlugin>>#2Plugin>>#512ProcessBufferUpdatingHash, SHA2Plugin>>#256ProcessBufferUpdatingHash with Clang on SSE x86_64, which requires 128-bit stack alignment.

Fix type-casting issue on Windows 64-bit systems. We must use "long long" if we mean "double word".

Polish: Now there is an API call (isLong64s:) to determine if something is double words, use it.

There is no need to use stackObjectValue: if its result is tested via isBytes:, isWords: et al. These methods check for immediates, so the check in stackObjectValue: is redundant and expensive (it must set the failed flag which should be tested later).

Don't bother assigning the result of firstIndexableField: to an intermediate variable; its return type is void *, so it's perfect as an argument to memcpy: et al.

Amalgamate tests using and: to have as few ^interpreterProxy primitiveFailFor: PrimErrBadArgument clauses as possible (greater instruction cache density). Use methodReturnReceiver (ditto)

commit sha: 27d2d9f0c76b5805ff43578272e809aeb665a498

push time in 1 month ago
push

tonyg push tonyg/websub

tonyg
tonyg

describe diffing mechanism for RSS and Atom

closes #27

tonyg
tonyg

Merge pull request #81 from aaronpk/diffing

describe diffing mechanism for RSS and Atom

tonyg
tonyg

adding PATCHES.html. fixes #52

tonyg
tonyg

changed Section 2, Bullet 3. Fixes #85

tonyg
tonyg

Merge branch 'master' of github.com:w3c/pubsub

tonyg
tonyg

Merge pull request #91 from w3c/julien51/deadSimpleGone

not using dead simple but very simple. Solves https://github.com/w3c/

tonyg
tonyg

clarify that subscribers may change their secret for followup subscriptions

for #47

tonyg
tonyg

Merge pull request #92 from aaronpk/issue-47

clarify that subscribers may change their secret for followup subscriptions

tonyg
tonyg

subscription requests should be utf-8 encoded. fixes #89

tonyg
tonyg

Merge pull request #95 from w3c/julien51/utf8Subs

subscription requests should be utf-8 encoded. fixes #89

tonyg
tonyg

adding text about content negociation. fixes #86

tonyg
tonyg

Hub supports redirect to another hub. Fixes #73

tonyg
tonyg

Merge pull request #94 from w3c/julien51/contentNegociation

adding text about content negociation. fixes #86

tonyg
tonyg

Merge pull request #93 from w3c/julien51/hubRedirects

Hub supports redirect to another hub. Fixes #73

tonyg
tonyg

updated changelog, fixed typos

tonyg
tonyg

adding a consideration section.

tonyg
tonyg

Merge pull request #96 from w3c/julien51/securityConsiderations

adding a consideration section.

tonyg
tonyg

add examples of discovery responses

including example of content negotiation per the discussion from #86

commit sha: 2bb468a15ca1dc500d2d0cbdc600741342acfd42

push time in 1 month ago
Activity icon
created branch

tonyg in tonyg/racket create branch tonyg/repl-read-ux-improvements

createdAt 1 month ago
Dec
3
1 month ago
Activity icon
issue

tonyg issue comment OpenSmalltalk/opensmalltalk-vm

tonyg
tonyg

Illegal instruction `mrs x0, id_aa64isar0_el1` on aarch64 on older Linux kernels

I'm running Cog on aarch64, and because I have an old linux kernel (v3.18.140) which I cannot upgrade (it's a repurposed PostmarketOS Android device), Cog yields illegal instruction trying to execute mrs x0, id_aa64isar0_el1. This instruction is privileged, but later linux kernels trap and emulate it for userspace.

Given that it's currently only being used to detect presence of atomic instructions (self setHasAtomicInstructions: (idISAR0 >> 20 bitAnd: 2r1111) = 2r10), and there's a kernel API for retrieving that specific bit of information (https://www.kernel.org/doc/html/latest/arm64/elf_hwcaps.html suggests HWCAP_ATOMICS), perhaps instead of using the instruction directly Cog could call the relevant getauxval variant?

For now, I have the Stack VM running well on aarch64, so I can make progress, even if it is a little slower than it could be :-)

tonyg
tonyg

Amazing, thank you very much Eliot!

Dec
1
1 month ago
Activity icon
issue

tonyg issue comment OpenSmalltalk/opensmalltalk-vm

tonyg
tonyg

"Failed to write image file" if stdin is closed at snapshot-and-quit time on Unix

To reproduce

  1. Open a fresh Squeak trunk image
  2. doIt:
FileStream stdin close.
Smalltalk snapshot: true andQuit: true.

Expected

Image saves and quits.

Actual

Image fails to save, opens an error window with message Failed to write image file (disk full?).

Analysis

  • writeImageFileIO calls sqImageFileOpen.
  • sqImageFileOpen in platforms/unix/vm/sqImageFileAccess.h never observably fails to its caller - it calls exit if open(2) fails
  • sqImageFileOpen can perfectly reasonably hand back file descriptor zero for the new image file! If FileStream stdin has been closed, it will in fact do so.
  • If it does this, writeImageFileIO gets confused, because if the result of sqImageFileOpen is equal to null, it considers this a failure.

This looks annoyingly Unix-specific, a result of punning raw fds as sqImageFile values. Other platforms use e.g. a FILE* instead of a raw fd, in which case even if fd 0 were to be opened under the covers, the corresponding FILE* would not be null.

Appendix (not very useful): Full bug report from debugger

29 November 2021 4:32:57.802885 pm

VM: unix - Smalltalk Image: Squeak6.0alpha [latest update: #20751]

SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /tmp/squeaker-run-g38g7lcb Trusted Dir /tmp/squeaker-run-g38g7lcb/secure Untrusted Dir /tmp/squeaker-run-g38g7lcb/My Squeak

SmalltalkImage(Object)>>error: Receiver: Smalltalk Arguments and temporary variables: aString: 'Failed to write image file (disk full?)' Receiver's instance variables: globals: Smalltalk

SmalltalkImage>>snapshot:andQuit:withExitCode:embedded: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true exitCode: nil embeddedFlag: false resuming: nil msg: '----QUIT----{29 November 2021 . 4:32:05 pm} squeak.image priorSource: 20637916...etc... Receiver's instance variables: globals: Smalltalk

SmalltalkImage>>snapshot:andQuit:embedded: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true embeddedFlag: false Receiver's instance variables: globals: Smalltalk

SmalltalkImage>>snapshot:andQuit: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true Receiver's instance variables: globals: Smalltalk

UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:

Receiver's instance variables: 

nil

Compiler>>evaluateCue:ifFail: Receiver: a Compiler Arguments and temporary variables: aCue: a CompilationCue failBlock: [closure] in Compiler>>evaluateCue:ifFail:logged: methodNode: DoIt ^ Smalltalk snapshot: true andQuit: true method: (UndefinedObject>>#1015626)") value: nil Receiver's instance variables: parser: a Parser cue: a CompilationCue

Compiler>>evaluateCue:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: aCue: a CompilationCue failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc... logFlag: true value: nil Receiver's instance variables: parser: a Parser cue: a CompilationCue

Compiler>>evaluate:in:to:environment:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadStream aContext: nil receiver: nil anEnvironment: Smalltalk aRequestor: a SmalltalkEditor failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc... logFlag: true Receiver's instance variables: parser: a Parser cue: a CompilationCue

[] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelection result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

FullBlockClosure(BlockClosure)>>on:do: Receiver: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Arguments and temporary variables: exceptionOrExceptionSet: OutOfScopeNotification handlerAction: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc... handlerActive: true handlerRearmed: false Receiver's instance variables: outerContext: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: startpcOrMethod: ([] in TextEditor>>#1...etc... numArgs: 0 receiver: a SmalltalkEditor

SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelection result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables:

Receiver's instance variables: 
	morph: 	a TextMorphForEditView(2236073)
	model: 	a Workspace
	paragraph: 	a NewParagraph
	markBlock: 	a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc...
	pointBlock: 	a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected]

...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>doIt Receiver: a SmalltalkEditor Arguments and temporary variables:

Receiver's instance variables: 
	morph: 	a TextMorphForEditView(2236073)
	model: 	a Workspace
	paragraph: 	a NewParagraph
	markBlock: 	a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc...
	pointBlock: 	a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected]

...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>doIt: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [[email protected] keystroke '' (100) 12807] Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [[email protected] keystroke '' (100) 12807] honorCommandKeys: true typedChar: $d Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>keyStroke: Receiver: a SmalltalkEditor Arguments and temporary variables: anEvent: [[email protected] keystroke '' (100) 12807] Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(2236073) Arguments and temporary variables: evt: [[email protected] keystroke '' (100) 12807] action: nil Receiver's instance variables: bounds: [email protected] corner: [email protected] owner: a TransformMorph(3867971) submorphs: #0@0 corner: [email protected] color: Color black extension: a MorphExtension (3908410) [other: (unfocusedSelectionColor -> (Col...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'FileStream stdin close Smalltalk snapshot: true andQuit: true...etc... wrapFlag: true paragraph: a NewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: [email protected] corner: [email protected] readOnly: false autoFit: true editView: a PluggableTextMorphPlus(2181400) acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent: Receiver: a TextMorphForEditView(2236073) Arguments and temporary variables: interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke:...etc... evt: [[email protected] keystroke '' (100) 12807] oldEditor: a SmalltalkEditor oldParagraph: a NewParagraph oldText: a Text for 'FileStream stdin close Smalltalk save: true andQuit: true'...etc... oldSelection: {[email protected] corner: [email protected]} Receiver's instance variables: bounds: [email protected] corner: [email protected] owner: a TransformMorph(3867971) submorphs: #0@0 corner: [email protected] color: Color black extension: a MorphExtension (3908410) [other: (unfocusedSelectionColor -> (Col...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'FileStream stdin close Smalltalk snapshot: true andQuit: true...etc... wrapFlag: true paragraph: a NewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: [email protected] corner: [email protected] readOnly: false autoFit: true editView: a PluggableTextMorphPlus(2181400) acceptOnCR: false

TextMorphForEditView>>handleInteraction:fromEvent: Receiver: a TextMorphForEditView(2236073) Arguments and temporary variables: interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke:...etc... evt: [[email protected] keystroke '' (100) 12807] Receiver's instance variables: bounds: [email protected] corner: [email protected] owner: a TransformMorph(3867971) submorphs: #0@0 corner: [email protected] color: Color black extension: a MorphExtension (3908410) [other: (unfocusedSelectionColor -> (Col...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'FileStream stdin close Smalltalk snapshot: true andQuit: true...etc... wrapFlag: true paragraph: a NewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: [email protected] corner: [email protected] readOnly: false autoFit: true editView: a PluggableTextMorphPlus(2181400) acceptOnCR: false

--- The full stack --- SmalltalkImage(Object)>>error: SmalltalkImage>>snapshot:andQuit:withExitCode:embedded: SmalltalkImage>>snapshot:andQuit:embedded: SmalltalkImage>>snapshot:andQuit: UndefinedObject>>DoIt Compiler>>evaluateCue:ifFail: Compiler>>evaluateCue:ifFail:logged: Compiler>>evaluate:in:to:environment:notifying:ifFail:logged: [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: FullBlockClosure(BlockClosure)>>on:do: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: SmalltalkEditor(TextEditor)>>evaluateSelection SmalltalkEditor(TextEditor)>>doIt SmalltalkEditor(TextEditor)>>doIt: SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent: SmalltalkEditor(TextEditor)>>keyStroke: [] in [] in TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent: TextMorphForEditView>>handleInteraction:fromEvent:


[] in TextMorphForEditView(TextMorph)>>keyStroke: StandardToolSet class>>codeCompletionAround:textMorph:keyStroke: ToolSet class>>codeCompletionAround:textMorph:keyStroke: TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView>>keyStroke: TextMorphForEditView(Morph)>>handleKeystroke: TextMorphForEditView(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: TextMorphForEditView(Morph)>>handleFocusEvent: MorphicEventDispatcher>>doHandlingForFocusEvent:with: MorphicEventDispatcher>>dispatchFocusEvent:with: TextMorphForEditView(Morph)>>processFocusEvent:using: TextMorphForEditView(Morph)>>processFocusEvent: [] in [] in [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveEventVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveEventVariable class(DynamicVariable class)>>value:during: [] in ActiveEventVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveEventVariable class>>value:during: KeyboardEvent(MorphicEvent)>>becomeActiveDuring: [] in [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveHandVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveHandVariable class(DynamicVariable class)>>value:during: [] in ActiveHandVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveHandVariable class>>value:during: HandMorph>>becomeActiveDuring: [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveWorldVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveWorldVariable class(DynamicVariable class)>>value:during: [] in ActiveWorldVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveWorldVariable class>>value:during: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: -- and more not shown --

tonyg
tonyg
Nov
30
1 month ago
push

tonyg push tonyg/squeaker

tonyg
tonyg

Save changes file in case of disaster

commit sha: 655df0e439dfd11320950742ad8f6ddd4e01d3f0

push time in 1 month ago
Nov
29
1 month ago
Activity icon
issue

tonyg issue OpenSmalltalk/opensmalltalk-vm

tonyg
tonyg

Illegal instruction `mrs x0, id_aa64isar0_el1` on aarch64 on older Linux kernels

I'm running Cog on aarch64, and because I have an old linux kernel (v3.18.140) which I cannot upgrade (it's a repurposed PostmarketOS Android device), Cog yields illegal instruction trying to execute mrs x0, id_aa64isar0_el1. This instruction is privileged, but later linux kernels trap and emulate it for userspace.

Given that it's currently only being used to detect presence of atomic instructions (self setHasAtomicInstructions: (idISAR0 >> 20 bitAnd: 2r1111) = 2r10), and there's a kernel API for retrieving that specific bit of information (https://www.kernel.org/doc/html/latest/arm64/elf_hwcaps.html suggests HWCAP_ATOMICS), perhaps instead of using the instruction directly Cog could call the relevant getauxval variant?

For now, I have the Stack VM running well on aarch64, so I can make progress, even if it is a little slower than it could be :-)

Activity icon
issue

tonyg issue OpenSmalltalk/opensmalltalk-vm

tonyg
tonyg

"Failed to write image file" if stdin is closed at snapshot-and-quit time on Unix

To reproduce

  1. Open a fresh Squeak trunk image
  2. doIt:
FileStream stdin close.
Smalltalk snapshot: true andQuit: true.

Expected

Image saves and quits.

Actual

Image fails to save, opens an error window with message Failed to write image file (disk full?).

Analysis

  • writeImageFileIO calls sqImageFileOpen.
  • sqImageFileOpen in platforms/unix/vm/sqImageFileAccess.h never observably fails to its caller - it calls exit if open(2) fails
  • sqImageFileOpen can perfectly reasonably hand back file descriptor zero for the new image file! If FileStream stdin has been closed, it will in fact do so.
  • If it does this, writeImageFileIO gets confused, because if the result of sqImageFileOpen is equal to null, it considers this a failure.

This looks annoyingly Unix-specific, a result of punning raw fds as sqImageFile values. Other platforms use e.g. a FILE* instead of a raw fd, in which case even if fd 0 were to be opened under the covers, the corresponding FILE* would not be null.

Appendix (not very useful): Full bug report from debugger

29 November 2021 4:32:57.802885 pm

VM: unix - Smalltalk Image: Squeak6.0alpha [latest update: #20751]

SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /tmp/squeaker-run-g38g7lcb Trusted Dir /tmp/squeaker-run-g38g7lcb/secure Untrusted Dir /tmp/squeaker-run-g38g7lcb/My Squeak

SmalltalkImage(Object)>>error: Receiver: Smalltalk Arguments and temporary variables: aString: 'Failed to write image file (disk full?)' Receiver's instance variables: globals: Smalltalk

SmalltalkImage>>snapshot:andQuit:withExitCode:embedded: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true exitCode: nil embeddedFlag: false resuming: nil msg: '----QUIT----{29 November 2021 . 4:32:05 pm} squeak.image priorSource: 20637916...etc... Receiver's instance variables: globals: Smalltalk

SmalltalkImage>>snapshot:andQuit:embedded: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true embeddedFlag: false Receiver's instance variables: globals: Smalltalk

SmalltalkImage>>snapshot:andQuit: Receiver: Smalltalk Arguments and temporary variables: save: true quit: true Receiver's instance variables: globals: Smalltalk

UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables:

Receiver's instance variables: 

nil

Compiler>>evaluateCue:ifFail: Receiver: a Compiler Arguments and temporary variables: aCue: a CompilationCue failBlock: [closure] in Compiler>>evaluateCue:ifFail:logged: methodNode: DoIt ^ Smalltalk snapshot: true andQuit: true method: (UndefinedObject>>#1015626)") value: nil Receiver's instance variables: parser: a Parser cue: a CompilationCue

Compiler>>evaluateCue:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: aCue: a CompilationCue failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc... logFlag: true value: nil Receiver's instance variables: parser: a Parser cue: a CompilationCue

Compiler>>evaluate:in:to:environment:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: textOrStream: a ReadStream aContext: nil receiver: nil anEnvironment: Smalltalk aRequestor: a SmalltalkEditor failBlock: [closure] in [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc... logFlag: true Receiver's instance variables: parser: a Parser cue: a CompilationCue

[] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelection result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

FullBlockClosure(BlockClosure)>>on:do: Receiver: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Arguments and temporary variables: exceptionOrExceptionSet: OutOfScopeNotification handlerAction: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo:...etc... handlerActive: true handlerRearmed: false Receiver's instance variables: outerContext: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: startpcOrMethod: ([] in TextEditor>>#1...etc... numArgs: 0 receiver: a SmalltalkEditor

SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: Receiver: a SmalltalkEditor Arguments and temporary variables: aBlock: [closure] in SmalltalkEditor(TextEditor)>>evaluateSelection result: nil rcvr: nil ctxt: nil Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>evaluateSelection Receiver: a SmalltalkEditor Arguments and temporary variables:

Receiver's instance variables: 
	morph: 	a TextMorphForEditView(2236073)
	model: 	a Workspace
	paragraph: 	a NewParagraph
	markBlock: 	a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc...
	pointBlock: 	a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected]

...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>doIt Receiver: a SmalltalkEditor Arguments and temporary variables:

Receiver's instance variables: 
	morph: 	a TextMorphForEditView(2236073)
	model: 	a Workspace
	paragraph: 	a NewParagraph
	markBlock: 	a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc...
	pointBlock: 	a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected]

...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>doIt: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [[email protected] keystroke '' (100) 12807] Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent: Receiver: a SmalltalkEditor Arguments and temporary variables: aKeyboardEvent: [[email protected] keystroke '' (100) 12807] honorCommandKeys: true typedChar: $d Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

SmalltalkEditor(TextEditor)>>keyStroke: Receiver: a SmalltalkEditor Arguments and temporary variables: anEvent: [[email protected] keystroke '' (100) 12807] Receiver's instance variables: morph: a TextMorphForEditView(2236073) model: a Workspace paragraph: a NewParagraph markBlock: a CharacterBlock with index 1 and character $F and rectangle [email protected] cor...etc... pointBlock: a CharacterBlock with index 62 and rectangle [email protected] corner: [email protected] ...etc... beginTypeInIndex: nil emphasisHere: #49 to: 56) oldInterval: nil typeAhead: a WriteStream history: a TextEditorCommandHistory

[] in [] in TextMorphForEditView(TextMorph)>>keyStroke: Receiver: a TextMorphForEditView(2236073) Arguments and temporary variables: evt: [[email protected] keystroke '' (100) 12807] action: nil Receiver's instance variables: bounds: [email protected] corner: [email protected] owner: a TransformMorph(3867971) submorphs: #0@0 corner: [email protected] color: Color black extension: a MorphExtension (3908410) [other: (unfocusedSelectionColor -> (Col...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'FileStream stdin close Smalltalk snapshot: true andQuit: true...etc... wrapFlag: true paragraph: a NewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: [email protected] corner: [email protected] readOnly: false autoFit: true editView: a PluggableTextMorphPlus(2181400) acceptOnCR: false

TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent: Receiver: a TextMorphForEditView(2236073) Arguments and temporary variables: interactionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke:...etc... evt: [[email protected] keystroke '' (100) 12807] oldEditor: a SmalltalkEditor oldParagraph: a NewParagraph oldText: a Text for 'FileStream stdin close Smalltalk save: true andQuit: true'...etc... oldSelection: {[email protected] corner: [email protected]} Receiver's instance variables: bounds: [email protected] corner: [email protected] owner: a TransformMorph(3867971) submorphs: #0@0 corner: [email protected] color: Color black extension: a MorphExtension (3908410) [other: (unfocusedSelectionColor -> (Col...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'FileStream stdin close Smalltalk snapshot: true andQuit: true...etc... wrapFlag: true paragraph: a NewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: [email protected] corner: [email protected] readOnly: false autoFit: true editView: a PluggableTextMorphPlus(2181400) acceptOnCR: false

TextMorphForEditView>>handleInteraction:fromEvent: Receiver: a TextMorphForEditView(2236073) Arguments and temporary variables: interActionBlock: [closure] in [] in TextMorphForEditView(TextMorph)>>keyStroke:...etc... evt: [[email protected] keystroke '' (100) 12807] Receiver's instance variables: bounds: [email protected] corner: [email protected] owner: a TransformMorph(3867971) submorphs: #0@0 corner: [email protected] color: Color black extension: a MorphExtension (3908410) [other: (unfocusedSelectionColor -> (Col...etc... borderWidth: 0 borderColor: Color black textStyle: a TextStyle Bitmap DejaVu Sans 9 text: a Text for 'FileStream stdin close Smalltalk snapshot: true andQuit: true...etc... wrapFlag: true paragraph: a NewParagraph editor: a SmalltalkEditor container: nil predecessor: nil successor: nil backgroundColor: nil margins: [email protected] corner: [email protected] readOnly: false autoFit: true editView: a PluggableTextMorphPlus(2181400) acceptOnCR: false

--- The full stack --- SmalltalkImage(Object)>>error: SmalltalkImage>>snapshot:andQuit:withExitCode:embedded: SmalltalkImage>>snapshot:andQuit:embedded: SmalltalkImage>>snapshot:andQuit: UndefinedObject>>DoIt Compiler>>evaluateCue:ifFail: Compiler>>evaluateCue:ifFail:logged: Compiler>>evaluate:in:to:environment:notifying:ifFail:logged: [] in SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: FullBlockClosure(BlockClosure)>>on:do: SmalltalkEditor(TextEditor)>>evaluateSelectionAndDo: SmalltalkEditor(TextEditor)>>evaluateSelection SmalltalkEditor(TextEditor)>>doIt SmalltalkEditor(TextEditor)>>doIt: SmalltalkEditor(TextEditor)>>dispatchOnKeyboardEvent: SmalltalkEditor(TextEditor)>>keyStroke: [] in [] in TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent: TextMorphForEditView>>handleInteraction:fromEvent:


[] in TextMorphForEditView(TextMorph)>>keyStroke: StandardToolSet class>>codeCompletionAround:textMorph:keyStroke: ToolSet class>>codeCompletionAround:textMorph:keyStroke: TextMorphForEditView(TextMorph)>>keyStroke: TextMorphForEditView>>keyStroke: TextMorphForEditView(Morph)>>handleKeystroke: TextMorphForEditView(TextMorph)>>handleKeystroke: KeyboardEvent>>sentTo: TextMorphForEditView(Morph)>>handleEvent: TextMorphForEditView(Morph)>>handleFocusEvent: MorphicEventDispatcher>>doHandlingForFocusEvent:with: MorphicEventDispatcher>>dispatchFocusEvent:with: TextMorphForEditView(Morph)>>processFocusEvent:using: TextMorphForEditView(Morph)>>processFocusEvent: [] in [] in [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveEventVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveEventVariable class(DynamicVariable class)>>value:during: [] in ActiveEventVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveEventVariable class>>value:during: KeyboardEvent(MorphicEvent)>>becomeActiveDuring: [] in [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveHandVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveHandVariable class(DynamicVariable class)>>value:during: [] in ActiveHandVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveHandVariable class>>value:during: HandMorph>>becomeActiveDuring: [] in HandMorph>>sendFocusEvent:to:clear: [] in ActiveWorldVariable class(DynamicVariable class)>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveWorldVariable class(DynamicVariable class)>>value:during: [] in ActiveWorldVariable class>>value:during: FullBlockClosure(BlockClosure)>>ensure: ActiveWorldVariable class>>value:during: PasteUpMorph>>becomeActiveDuring: HandMorph>>sendFocusEvent:to:clear: HandMorph>>sendEvent:focus:clear: HandMorph>>sendKeyboardEvent: HandMorph>>handleEvent: -- and more not shown --

Nov
22
2 months ago
Nov
20
2 months ago
push

tonyg push tonyg/opensmalltalk-vm

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3102

CoInterpreter: fix a slip in printStringDataOf:on:.

SpurMemoryManager: move changeClassOf:to: up and use bytesPerOop to eliminate duplication of the whole method.

sqSCCSVersion.h: eliminate a warning

commit sha: ae7bf96815718de4cda3152fc79d2a7102707637

push time in 2 months ago
push

tonyg push tonyg/squeaker

tonyg
tonyg

Cope with a particular kind of minor corruption

commit sha: 280dfb3e499ff45dcf769e114e494097da2ca666

push time in 2 months ago
Nov
19
2 months ago
Nov
18
2 months ago
push

tonyg push tonyg/squeaker

tonyg
tonyg

Add --root option to squeaker run

commit sha: 8a1ccc70f458c6d4b234fb1229aa31f25e5dd650

push time in 2 months ago
push

tonyg push tonyg/squeaker

tonyg
tonyg

Improve dot output somewhat

commit sha: 8b330b7dc7f24bd4db540ed7f41b5d9d1e17839f

push time in 2 months ago
push

tonyg push tonyg/squeaker

tonyg
tonyg

Better logging of cached stages

commit sha: 36dba58026cbe27bdb4a697e9efa1c09460e4860

push time in 2 months ago
Activity icon
created branch

tonyg in tonyg/squeaker create branch main

createdAt 2 months ago
Activity icon
created repository

tonyg in tonyg/squeaker create repository

createdAt 2 months ago
Nov
17
2 months ago
push

tonyg push tonyg/opensmalltalk-vm

tonyg
tonyg

CogVM source as per VMMaker.oscog-eem.3101

Interpreter/Simulator: Revise and refactor frame printing to allow the simulators to prefix frame addresses with an indication of the various frame/stack pointers (variables, processor registers). Extract the printing of the frame address to printFrameAddress: there-by eliminating quite a few simulator-specific versions of the frame field printers.

Use %p to print pointers, using extensions to the Printf package, '%P' to print with the 16r prefix, and '%WP' to print with 16r prefix in a width dependent on the word size.

Realise that %Ns prints a left-padded string in a width of N characters to eliminbate the torturous %.*s%s forms using spaces.

Since %p always requires a pointer, cast the arguments to pringHex: et al to void pointers, and hence get rid of printHexPtr:.

Fix a slip in ObjectMemory>>#printNonPointerDataOf:on:.

Interpreter printing: must use %s to print object strings since they may contain %'s.

Spur Slang: fix a bug in computing accessor depth chains. If a primitive contains different assignments to the same variable (e.g. a primitive which has different forms for var args such as PSharePlugin>>primitivePostKeyboardEvent as of 10/26/2021) then the simple test would consider an assignment to the same variable as an extension of the chain.

commit sha: 79e88e6ee94372aac9634971854e875b8fde5ffe

push time in 2 months ago
Previous