PasteRack.org
Paste # 36979
2020-01-19 22:26:56

Fork as a new paste.

Paste viewed 509 times.


Embed:

#lang racket

OS :windows insider program Slow
Windows 10 Insider Preview Build 19041.21 
I am not sure if the format is correct .

Dr.racket version :download from https://download.racket-lang.org/ racket-7.5-x86_64-win32.exe (78M)

before update the OS it just work fine.
but after that,whenever I open the Dr.Racket ,it just Stuck and I can't do anything ,even input a number,every Button no response,I have to kill it in Task Manage,
I have try to debug it with VS,just get a "Exception thrown: write access violation",I have ask someone if it is because my OS update .they recommanded me download the source ,build it,and find the bug.

what I find just a  s[0] = 0; 

in gmc.c 

 void scheme_gmp_tls_unload(intptr_t *s, void *data)
{
  current_total_allocation = (uintptr_t)s[0];
  max_total_allocation = (uintptr_t)s[1];
  gmp_tmp_current = (tmp_stack *)s[2];
  s[0] = 0;
  gmp_mem_pool = data;
}

in the Call Stack I jump to the position where the function be called.
just find :

static void done_with_GC () {
  scheme_gmp_tls_unload (XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> gmp_tls , XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> gmp_tls_data ) ; 
  XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> gmp_tls_data = ((void * ) 0 ) ; 
  if (XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> running ) {
    XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_runstack_ ) = XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> runstack ; 
    XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_runstack_start_ ) = XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> runstack_start ; 
  }
  scheme_resume_remembered_threads () ; 
  XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> end_this_gc_time_ ) = scheme_get_process_milliseconds () ; 
  XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> end_this_gc_real_time_ ) = scheme_get_inexact_milliseconds () ; 
  XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_total_gc_time_ ) += (XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> end_this_gc_time_ ) - XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> start_this_gc_time_ ) ) ; 
  XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> gc_prep_thread_chain_ ) = XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) ; 
  XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) -> gc_prep_chain = XFORM_OK_ASSIGN (((Thread_Local_Variables * ) ((char * ) & scheme_thread_locals_space + scheme_tls_delta ) ) -> scheme_current_thread_ ) ; 
  run_gc_callbacks (0 ) ; 
  scheme_future_continue_after_gc () ; 
}

I don't know what the "XFORM_OK_ASSIGN" is ,so I google it ,just find in 
https://github.com/racket/racket/blob/master/racket/collects/compiler/private/xform.rkt#L772

either I don't know what the file is.so my question is :
is my thinking right? and where can I find the doc about "what the file is".


and some else question ,in the case(I mean GUI Stuck),
I download the source from https://github.com/racket/racket and build it .
after I find it just a min part,not include the GUI,so what I find the "bug" 
whether or not really is the reason about GUI stuck?

I am not sure if this question is naive,I am new to it,so please give some tip atleast  thanks!