PDP-10 / its

Incompatible Timesharing System
Other
868 stars 84 forks source link

DDT crash on single step #401

Closed aap closed 7 years ago

aap commented 7 years ago

I'm still somewhat of a luser when it comes to ITS, I hope the issue is not just my stupidity. I assembled the simple program from Henry Baker's pdp-10 assembly tutorial and tried to step through it with DDT, but once I type ^N the system crashes. See my transcript from simh:

        TITLE   COUNT

A=1

START:  MOVSI A,-100

LOOP:   HRRZM A,TABLE(A)
        AOBJN A,LOOP
        .LOGOUT 1,

TABLE:  BLOCK 100

END START
*:midas simple >
COUNT
COUNT
Run time = 0.00
1432 Symbols including initial ones (52% used)

:KILL
*foo$j!
*$l simple bin
*start$b   $g
$1B; START>>MOVSI A,-100   A/   0      <^N here>
ONE-PROCEED IN EXEC MODE 4000,,14601  
BUGHALT.  FIND A WIZARD OR CONSIDER TAKING A CRASH DUMP.
THE SYSTEM HAS CRASHED AND CANNOT BE REVIVED WITHOUT EXPERT ATTENTION.
IF YOU CAN'T FIND HELP, RELOAD THE SYSTEM.
YOU ARE NOW IN DDT.
BUGPC/   SWSCP9+10,,ONEPRO+13   $Q-2/   SKIPA TT,105245   
larsbrinkhoff commented 7 years ago

This may be a problem with SIMH. @eswenson1, have you noticed this using KLH10?

eswenson1 commented 7 years ago

No, I've never had any issues with either ^N or $^N. When I get a chance, I'll try out your specific example.

eswenson1 commented 7 years ago

I just tried to assemble and debug your SIMPLE program on ES-ITS. I had no trouble stepping with ^N or $^N.

larsbrinkhoff commented 7 years ago

I see this too in SIMH, so now I'm fairly certain it's a SIMH bug. I'll try it in the latest SIMH to see if it's a fixed bug.

$^N works in SIMH, so it's a problem with 1-proceed.

eswenson1 commented 7 years ago

I forgot to say, ES-ITS uses KLH10. Also, it wasn't built using the DB build, so it is still possible that a DB-built version on KLH10 would fail -- except that I've debugged many, many issues on DB ITS (under KLH10) with no problems. And I use a combination of ^N and $^N so I'm pretty confident that KLH10 supports all this fine. I never use SIMH because it doesn't support the network.

markpizz commented 7 years ago

So @larsbrinkhoff labels this as a bug. If one of the exiting parties to this discussion doesn't want to dig into the simulator to fix it, then please provide: 1) sim> SHOW VERSION output for the failing simulator 2) a simulator configuration file which reflects a minimal configuration that demonstrates the problem 3) critical data files (i.e. disk image, etc.) necessary to reproduce the problem 4) precise instructions to get to the point which demonstrates the failure. 5) the expected behavior which currently isn't being achieved.

Thanks.

aap commented 7 years ago

Right. I tested with klh10 yesterday and indeed did not experience this issue, so I cross-posted this issue to the simh repo: https://github.com/simh/simh/issues/373 When I get home I will provide the info you asked for on the simh issue page.

Until simh is fixed I think we should leave this issue open.

larsbrinkhoff commented 7 years ago

Quick check: show version says

PDP-10 simulator V3.8-1 [64b data, 32b addresses, Ethernet support]

I looked into the SIMH git log, and didn't find any comments about ITS 1-proceed since it was implemented in 2001.

larsbrinkhoff commented 7 years ago

I also tested SIMH built from GitHub today. Same problem. show version:

PDP-10 simulator V4.0-0 Beta
  Simulator Framework Capabilities:
    64b data
    32b addresses
    Ethernet Packet transports:TAP:NAT:UDP
    Idle/Throttling support is available
    Virtual Hard Disk (VHD) support
    RAW disk and CD/DVD ROM support
    Asynchronous I/O support
    FrontPanel API Version 2
  Host Platform:
    Compiler: GCC 4.8.4
    Simulator Compiled as C arch: x64 (Release Build) on Nov  8 2016 at 12:51:38
    Memory Access: Little Endian
    Memory Pointer Size: 64 bits
    Large File (>2GB) support
    SDL Video support: No Video Support
    PCRE RegEx support for EXPECT commands
    OS clock resolution: 1ms
    Time taken by msleep(1): 2ms
    OS: Linux delphi 4.4.0-53-generic #74~14.04.1-Ubuntu SMP Fri Dec 2 03:43:31 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
        git commit id: $Format:
markpizz commented 7 years ago

Hmmm.... I would expect to see the git commit id: $Format to reflect the current commit.

How did you pick up the github version? and how did you build it?

larsbrinkhoff commented 7 years ago

I believe the exact steps were:

git clone https://github.com/simh/simh
cd simh
make pdp10

Then I ran BIN/pdp10.

larsbrinkhoff commented 7 years ago

The commit id is 0461008991aa12bd677bf448809fe214be13d8d9

markpizz commented 7 years ago

I believed you about it being current. I'm still wondering how the commit id didn't get into the binary.

When I do exactly what you said, I get the commit id:

mark@mark-VirtualBox:~$ git clone https://github.com/simh/simh
Cloning into 'simh'...
remote: Counting objects: 19814, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 19814 (delta 2), reused 0 (delta 0), pack-reused 19804
Receiving objects: 100% (19814/19814), 29.78 MiB | 6.96 MiB/s, done.
Resolving deltas: 100% (15592/15592), done.
Checking connectivity... done.
mark@mark-VirtualBox:~$ cd simh
mark@mark-VirtualBox:~/simh$ make pdp10
*** Installing git hooks in local repository ***
lib paths are: /lib/x86_64-linux-gnu/ /usr/lib/ /usr/lib/x86_64-linux-gnu/ /usr/lib/x86_64-linux-gnu/libfakeroot/ /usr/lib/x86_64-linux-gnu/mesa-egl/ /usr/lib/x86_64-linux-gnu/mesa/
include paths are: /usr/include
using libm: /usr/lib/x86_64-linux-gnu/libm.so
using librt: /usr/lib/x86_64-linux-gnu/librt.so
using libpthread: /usr/lib/x86_64-linux-gnu/libpthread.so /usr/include/pthread.h
using libpcreposix: /usr/lib/x86_64-linux-gnu/libpcreposix.so /usr/include/pcreposix.h
using libdl: /usr/lib/x86_64-linux-gnu/libdl.so /usr/include/dlfcn.h
using libpcap: /usr/include/pcap.h
*** Info ***
*** Info *** pdp10 Simulator are being built with
*** Info *** minimal libpcap networking support
*** Info ***
*** Info ***
*** Info *** Simulators on your Linux platform can also be built with
*** Info *** extended LAN Ethernet networking support by using VDE Ethernet.
*** Info ***
*** Info *** To build simulator(s) with extended networking support you
*** Info *** should install the vde2 package to provide this
*** Info *** functionality for your Linux system:
*** Info ***        $ sudo apt-get install libvdeplug-dev
*** Info ***
***
*** pdp10 Simulator being built with:
*** - compiler optimizations and no debugging support. GCC Version: 5.4.0.
*** - dynamic networking support using Linux provided libpcap components.
*** - Local LAN packet transports: PCAP TAP NAT(SLiRP)
***
*** git commit id is 0461008991aa12bd677bf448809fe214be13d8d9.
***
mkdir -p BIN
gcc -std=gnu99 -U__STRICT_ANSI__  -O2 -finline-functions -fgcse-after-reload -fpredictive-commoning -fipa-cp-clone -fno-unsafe-loop-optimizations -fno-strict-overflow -Wno-unused-result -DSIM_GIT_COMMIT_ID=0461008991aa12bd677bf448809fe214be13d8d9 -DSIM_COMPILER="GCC Version: 5.4.0" -I . -D_GNU_SOURCE -DUSE_READER_THREAD -DSIM_ASYNCH_IO  -DHAVE_PCREPOSIX_H -DHAVE_DLOPEN=so -DHAVE_GLOB  PDP10/pdp10_fe.c PDP11/pdp11_dz.c PDP10/pdp10_cpu.c PDP10/pdp10_ksio.c PDP10/pdp10_lp20.c PDP10/pdp10_mdfp.c PDP10/pdp10_pag.c PDP10/pdp10_rp.c PDP10/pdp10_sys.c PDP10/pdp10_tim.c PDP10/pdp10_tu.c PDP10/pdp10_xtnd.c PDP11/pdp11_pt.c PDP11/pdp11_ry.c PDP11/pdp11_cr.c PDP11/pdp11_dup.c PDP11/pdp11_dmc.c PDP11/pdp11_kmc.c PDP11/pdp11_xu.c scp.c sim_console.c sim_fio.c sim_timer.c sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c sim_disk.c sim_serial.c sim_video.c sim_imd.c sim_card.c -DVM_PDP10 -DUSE_INT64 -I PDP10 -I PDP11 -DHAVE_PCAP_NETWORK -I/usr/include/ -DBPF_CONST_STRING -DUSE_SHARED -DHAVE_TAP_NETWORK -Islirp -Islirp_glue -Islirp_glue/qemu -DHAVE_SLIRP_NETWORK -DUSE_SIMH_SLIRP_DEBUG slirp/*.c slirp_glue/*.c -o BIN/pdp10 -lm -lrt -lpthread -lpcreposix -ldl  
mark@mark-VirtualBox:~/simh$ BIN/pdp10
s
PDP-10 simulator V4.0-0 Beta        git commit id: 04610089
sim> 
larsbrinkhoff commented 7 years ago

I built it again, in a fresh directory. Now it worked.

When I did it the first time, I checked out SIMH as a subdirectory inside another git repository. That may be the problem.

markpizz commented 7 years ago

The latest simh will now also be able to display its commit-id when simh is a submodule of another repo.

aap commented 7 years ago

Since it seems to be fixed now, I'll close this issue.