{"action":"created","issue":{"url":"https://api.github.com/repos/SolraBizna/jarm/issues/1","repository_url":"https://api.github.com/repos/SolraBizna/jarm","labels_url":"https://api.github.com/repos/SolraBizna/jarm/issues/1/labels{/name}","comments_url":"https://api.github.com/repos/SolraBizna/jarm/issues/1/comments","events_url":"https://api.github.com/repos/SolraBizna/jarm/issues/1/events","html_url":"https://github.com/SolraBizna/jarm/issues/1","id":176968072,"number":1,"title":"Input queue full?","user":{"login":"jrb0001","id":2380263,"avatar_url":"https://avatars.githubusercontent.com/u/2380263?v=3","gravatar_id":"","url":"https://api.github.com/users/jrb0001","html_url":"https://github.com/jrb0001","followers_url":"https://api.github.com/users/jrb0001/followers","following_url":"https://api.github.com/users/jrb0001/following{/other_user}","gists_url":"https://api.github.com/users/jrb0001/gists{/gist_id}","starred_url":"https://api.github.com/users/jrb0001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrb0001/subscriptions","organizations_url":"https://api.github.com/users/jrb0001/orgs","repos_url":"https://api.github.com/users/jrb0001/repos","events_url":"https://api.github.com/users/jrb0001/events{/privacy}","received_events_url":"https://api.github.com/users/jrb0001/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-09-14T17:21:56Z","updated_at":"2016-09-15T15:15:33Z","closed_at":null,"body":"If I start the tetris example with `java -jar ../OCARMsim-0.0a3a.jar -screen 2 -memory 256 -addrinfocmd \"arm-none-eabi-addr2line -spfe bin/tetris.elf\" -rom bin/tetris.rom` and press any key for 3 seconds, an exception is thrown while tetris is sleeping for `2147483647` (2^31-1).\r\n\r\n```\r\nException in thread \"AWT-EventQueue-0\" java.lang.IllegalStateException: Queue full\r\n\tat java.util.AbstractQueue.add(AbstractQueue.java:98)\r\n\tat java.util.concurrent.ArrayBlockingQueue.add(ArrayBlockingQueue.java:312)\r\n\tat name.bizna.ocarmsim.FakeMachine.signal(FakeMachine.java:164)\r\n\tat name.bizna.ocarmsim.SimUI.keyReleased(SimUI.java:248)\r\n\tat java.awt.Component.processKeyEvent(Component.java:6496)\r\n\tat javax.swing.JComponent.processKeyEvent(JComponent.java:2832)\r\n\tat java.awt.Component.processEvent(Component.java:6312)\r\n\tat java.awt.Container.processEvent(Container.java:2236)\r\n\tat java.awt.Component.dispatchEventImpl(Component.java:4891)\r\n\tat java.awt.Container.dispatchEventImpl(Container.java:2294)\r\n\tat java.awt.Component.dispatchEvent(Component.java:4713)\r\n\tat java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)\r\n\tat java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)\r\n\tat java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)\r\n\tat java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)\r\n\tat java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)\r\n\tat java.awt.Component.dispatchEventImpl(Component.java:4762)\r\n\tat java.awt.Container.dispatchEventImpl(Container.java:2294)\r\n\tat java.awt.Window.dispatchEventImpl(Window.java:2750)\r\n\tat java.awt.Component.dispatchEvent(Component.java:4713)\r\n\tat java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)\r\n\tat java.awt.EventQueue.access$500(EventQueue.java:97)\r\n\tat java.awt.EventQueue$3.run(EventQueue.java:709)\r\n\tat java.awt.EventQueue$3.run(EventQueue.java:703)\r\n\tat java.security.AccessController.doPrivileged(Native Method)\r\n\tat java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)\r\n\tat java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)\r\n\tat java.awt.EventQueue$4.run(EventQueue.java:731)\r\n\tat java.awt.EventQueue$4.run(EventQueue.java:729)\r\n\tat java.security.AccessController.doPrivileged(Native Method)\r\n\tat java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)\r\n\tat java.awt.EventQueue.dispatchEvent(EventQueue.java:728)\r\n\tat java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)\r\n\tat java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)\r\n\tat java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)\r\n\tat java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)\r\n\tat java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)\r\n\tat java.awt.EventDispatchThread.run(EventDispatchThread.java:82)\r\n```"},"comment":{"url":"https://api.github.com/repos/SolraBizna/jarm/issues/comments/247358058","html_url":"https://github.com/SolraBizna/jarm/issues/1#issuecomment-247358058","issue_url":"https://api.github.com/repos/SolraBizna/jarm/issues/1","id":247358058,"user":{"login":"jrb0001","id":2380263,"avatar_url":"https://avatars.githubusercontent.com/u/2380263?v=3","gravatar_id":"","url":"https://api.github.com/users/jrb0001","html_url":"https://github.com/jrb0001","followers_url":"https://api.github.com/users/jrb0001/followers","following_url":"https://api.github.com/users/jrb0001/following{/other_user}","gists_url":"https://api.github.com/users/jrb0001/gists{/gist_id}","starred_url":"https://api.github.com/users/jrb0001/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrb0001/subscriptions","organizations_url":"https://api.github.com/users/jrb0001/orgs","repos_url":"https://api.github.com/users/jrb0001/repos","events_url":"https://api.github.com/users/jrb0001/events{/privacy}","received_events_url":"https://api.github.com/users/jrb0001/received_events","type":"User","site_admin":false},"created_at":"2016-09-15T15:15:33Z","updated_at":"2016-09-15T15:15:33Z","body":"Signals are currently consumed by polling, right? What about an interrupt mode (disabled on boot)? Assignable interrupt priority per signal type would be a bonus but not that important. To make it work reliably, just move the signals from the oc queue to your own queue and generate an interrupt if enabled before each instruction / group of instructions. The queue size looks right, a depth of more than 32 signals shouldn't be needed (unless on heavy (peripheral) load).\r\n\r\nThe problem with Tetris's signal processing is that it goes into a very long sleep. I will check that bug but it might take a while."}}
{"actor":{"display_login":"jrb0001"}}