Closed jhausladen closed 9 years ago
I will look into this. Which file did you use as the "random" input.yaml file?
I used the input.yaml file located in "test_suite/HardwareFaults/random" on the factorial.c example
Thanks, great job. I will look into it.
Thanks Phil for fixing this. Can you please update the yaml file in the factorial directory of the LLFI distribution ? If it works, we can go ahead and close the issue.
@karfair Could you explain a bit more , why the input.yaml file I used from the test_suite/HardwareFaults/random is not valid for the factorial.c example.
Fyi, we are testing tools for hardware fault injection e.g. radiation faults, with all kind of C code, for testing future implementations in the field of control-flow checking. So we would like to use a tool like yours to inject hardware faults and test the behaviour of our CFC-algorithm.
@karthikp-ubc I have updated the .yaml file. @jhausladen I did not write the "random" input.yaml file, but from what I understand (someone correct me if I am wrong) the file is only for the automated testing suite, and it is designed to be broken. From the file, "fi_cycle: 2661577811". This targets the 2661577811th execution of a certain instruction, for factorial.c, the entire execution is probably less than a 1000 cycles. I hope this helps!
@karfair Which .yaml file did you update? In my opinion the .yaml files provided in the test suite are valid input files for the corruption of the different samples such as factorial, deadlock etc. It would not make sense to corrupt yaml files because they are just a configuration file for LLFI including number of runs etc. Also not every program in the test suite folder includes a dedicated .yaml file
Can someone point me in the right direction for simulating the effects of hardware faults in a program for testing Control-Flow verification algorithms.
You're correct that all the yaml files should be valid ones, and not contain wrong parameters. We'll look into this issue and fix it (I believe that @karfair may have already done so for the other yaml files).
As for the control-flow verification algorithms, I think this is best addressed in the llfi-development list. Please join the list if you haven't done so and explain in detail what you're trying to do. Thanks a lot.
@karthikp-ubc I have sent a request to join the llfi-development list but got a notification from Google that it either may not exist or I may not have the permission to post messages to the group. How do I actually subscribe to the list? The address I used was llfi-development@googlegroups.com
@jhausladen The address I used was llfi-development+subscribe@googlegroups.com. Did it just last week, so hopefully it still works.
@jhausladen I added new .yaml files to the repository as some programs were missing them. I believe the .yaml in the random folder was intentionally erroneous to test if LLFI itself is working correctly (and not letting the scripts run with bad settings).
When trying to instrument e.g., the factorial.c example with the "random" input.yaml file the program raises an exception on the commandline and nothing is selected.
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1770) at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1653) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Node.fireEvent(Node.java:8390) at javafx.scene.control.Button.fire(Button.java:185) at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:182) at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:96) at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(BehaviorSkinBase.java:89) at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) at javafx.event.Event.fireEvent(Event.java:198) at javafx.scene.Scene$MouseHandler.process(Scene.java:3758) at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3486) at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1762) at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2495) at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:350) at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:275) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$350(GlassViewEventHandler.java:385) at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$347/1299860005.get(Unknown Source) at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404) at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:384) at com.sun.glass.ui.View.handleMouseEvent(View.java:555) at com.sun.glass.ui.View.notifyMouse(View.java:927) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication.lambda$null$48(GtkApplication.java:139) at com.sun.glass.ui.gtk.GtkApplication$$Lambda$41/1766822961.run(Unknown Source) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275) at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1765) ... 50 more Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer at application.InputYaml.load(InputYaml.java:109) at application.InstrumentController.loadProfile(InstrumentController.java:539) at application.InstrumentController.onClickSelectProfile(InstrumentController.java:533) ... 60 more