Code Monkey home page Code Monkey logo

Comments (7)

Neui avatar Neui commented on July 21, 2024

Can you get a backtrace from GDB? See #961

from gtg.

ksdrummer avatar ksdrummer commented on July 21, 2024

Yes, I'm trying but I never used gdb before and something is not working :

$ gdb --args gtg --debug
GNU gdb (GDB) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
"/usr/bin/gtg": not in executable format: file format not recognized
(gdb) bt
No stack.
(gdb)
$ gdb --args python3 /usr/bin/gtg --debug
GNU gdb (GDB) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from python3...

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
                                                                                                                                                                                                                     --Type <RET> for more, q to quit, c to continue without paging--
Reading symbols from /home/user/.cache/debuginfod_client/9efa8fdb1fce89c7a9f29802398a366b6c913a3e/debuginfo...
(gdb) bt
No stack.

What am I doing wrong ?

from gtg.

Neui avatar Neui commented on July 21, 2024

Oh I noticed I didn't included that. Run gdb --args python3 /usr/bin/gtg --debug (and accept that debuginfod just in case), and when you have the (gdb) prompt, run run to run GTG normally, and when it crashes you should see (gdb) prompt again, in which you can run bt (and then quit to quit).

from gtg.

ksdrummer avatar ksdrummer commented on July 21, 2024

Ok thank you for the explanations.

It seems now that it doesn't crash every time. But when it does :

$ gdb --args python3 /usr/bin/gtg --debug
GNU gdb (GDB) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from python3...

This GDB supports auto-downloading debuginfo from the following URLs:
  <https://debuginfod.archlinux.org>
Enable debuginfod for this session? (y or [n]) y
Debuginfod has been enabled.
To make this setting permanent, add 'set debuginfod enabled on' to .gdbinit.
Reading symbols from /home/user/.cache/debuginfod_client/9efa8fdb1fce89c7a9f29802398a366b6c913a3e/debuginfo...
(gdb) run
Starting program: /usr/bin/python3 /usr/bin/gtg --debug
[Thread debugging using libthread_db enabled]                                                       
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7ffff17776c0 (LWP 17837)]                                                             
[New Thread 0x7fffebfff6c0 (LWP 17838)]
[New Thread 0x7ffff0f766c0 (LWP 17839)]
2023-06-16 16:05:53,712 - DEBUG - application:set_logging:669 - Debug output enabled.
2023-06-16 16:05:53,746 - DEBUG - __init__:__init__:60 - Backends found: ['backend_caldav', 'backend_localfile', 'backend_signals']
2023-06-16 16:05:53,890 - DEBUG - keyring:get_password:59 - get_password GTG stored password -backend_caldav@cf365468-fd92-4584-9aa4-f17ea7777e9e
[New Thread 0x7fffeb30a6c0 (LWP 17841)]
2023-06-16 16:05:53,902 - DEBUG - xml:open_file:215 - Opening file /home/user/.local/share/gtg/gtg_data.xml
2023-06-16 16:05:53,918 - DEBUG - task:add_child:678 - adding child d97e7272-47be-4ea9-ac5e-efd343162237 to task 2672081846740608532
2023-06-16 16:05:53,918 - DEBUG - task:add_child:678 - adding child 07e1a668-a225-4118-bff3-62c8f485f576 to task 2672081846740608532
2023-06-16 16:05:53,918 - DEBUG - task:add_child:678 - adding child 287373352310008717 to task 2857326895566811759
2023-06-16 16:05:53,918 - DEBUG - task:add_child:678 - adding child 4034734574648802727 to task 2857326895566811759
2023-06-16 16:05:53,918 - DEBUG - task:add_child:678 - adding child 1569604018644874063 to task 2857326895566811759
2023-06-16 16:05:53,934 - DEBUG - task:add_child:678 - adding child c056e573-275b-4a1f-b039-a25024f45e81 to task 747897028847401606
2023-06-16 16:05:54,069 - DEBUG - keyring:set_password:48 - set_password GTG stored password -backend_caldav@cf365468-fd92-4584-9aa4-f17ea7777e9e
[New Thread 0x7fffeab096c0 (LWP 17842)]
[Thread 0x7fffeab096c0 (LWP 17842) exited]
[New Thread 0x7fffeab096c0 (LWP 17843)]
[New Thread 0x7fffea1c36c0 (LWP 17844)]
[Thread 0x7fffeab096c0 (LWP 17843) exited]
[New Thread 0x7fffeab096c0 (LWP 17845)]
[Thread 0x7fffea1c36c0 (LWP 17844) exited]
[New Thread 0x7fffea1c36c0 (LWP 17846)]
[Thread 0x7fffeab096c0 (LWP 17845) exited]
[Thread 0x7fffea1c36c0 (LWP 17846) exited]
[New Thread 0x7fffea1c36c0 (LWP 17847)]                                                             
[New Thread 0x7fffeab096c0 (LWP 17848)]
[Thread 0x7fffea1c36c0 (LWP 17847) exited]
[New Thread 0x7fffea1c36c0 (LWP 17849)]
[Thread 0x7fffeab096c0 (LWP 17848) exited]
[New Thread 0x7fffeab096c0 (LWP 17850)]
[Thread 0x7fffea1c36c0 (LWP 17849) exited]
[Thread 0x7fffeab096c0 (LWP 17850) exited]

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007ffff5f33790 in pango_font_description_to_string (desc=0x555556267b30)
    at ../pango/pango/fonts.c:1496
1496      if ((desc->variations && desc->mask & PANGO_FONT_MASK_VARIATIONS) &&                      
(gdb) bt
#0  0x00007ffff5f33790 in pango_font_description_to_string (desc=0x555556267b30)
    at ../pango/pango/fonts.c:1496
#1  0x00007ffff7dd54f6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#2  0x00007ffff7dd1f5e in ffi_call_int
    (cif=cif@entry=0x555556261328, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#3  0x00007ffff7dd4b73 in ffi_call
    (cif=cif@entry=0x555556261328, fn=<optimized out>, rvalue=rvalue@entry=0x7fffffffce48, avalue=<optimized out>) at ../src/x86/ffi64.c:710
#4  0x00007ffff7e046c1 in pygi_invoke_c_callable
    (function_cache=0x555556261280, state=<optimized out>, py_args=<optimized out>, py_kwargs=<optimized out>) at ../pygobject/gi/pygi-invoke.c:684
#5  0x00007ffff7e03080 in pygi_function_cache_invoke
    (py_kwargs=0x0, py_args=0x7fffeb4b31c0, function_cache=<optimized out>)
    at ../pygobject/gi/pygi-cache.c:862
#6  pygi_callable_info_invoke
    (user_data=0x0, cache=<optimized out>, kwargs=0x0, py_args=0x7fffeb4b31c0, info=<optimized out>) at ../pygobject/gi/pygi-invoke.c:727
#7  _wrap_g_callable_info_invoke (self=<optimized out>, py_args=0x7fffeb4b31c0, kwargs=0x0)
    at ../pygobject/gi/pygi-invoke.c:764
#8  0x00007ffff7df608a in _callable_info_call
    (kwargs=0x0, args=0x7ffff7d6f698 <_PyRuntime+58904>, self=0x7ffff01a3bb0)
    at ../pygobject/gi/pygi-info.c:548
#9  _callable_info_call (self=0x7ffff01a3bb0, args=0x7ffff7d6f698 <_PyRuntime+58904>, kwargs=0x0)
    at ../pygobject/gi/pygi-info.c:525
#10 0x00007ffff79d9dfc in _PyObject_MakeTpCall
    (tstate=0x7ffff7d89a38 <_PyRuntime+166328>, callable=0x7ffff01a3bb0, args=<optimized out>, nargs=0, keywords=0x0) at Objects/call.c:214
#11 0x00007ffff79e4379 in _PyEval_EvalFrameDefault
    (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:4773
#12 0x00007ffff7a0a9e0 in _PyEval_EvalFrame
    (throwflag=0, frame=0x7ffff7f9f280, tstate=0x7ffff7d89a38 <_PyRuntime+166328>)
--Type <RET> for more, q to quit, c to continue without paging--c
    at ./Include/internal/pycore_ceval.h:73
#13 _PyEval_Vector
    (kwnames=<optimized out>, argcount=3, args=0x7fffffffd1f0, locals=0x0, func=0x7ffff1b57c40, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Python/ceval.c:6438
#14 _PyFunction_Vectorcall
    (func=0x7ffff1b57c40, stack=0x7fffffffd1f0, nargsf=<optimized out>, kwnames=<optimized out>)
    at Objects/call.c:393
#15 0x00007ffff7a127b0 in _PyObject_FastCallDictTstate
    (kwargs=0x0, nargsf=<optimized out>, args=0x7fffffffd1f0, callable=0x7ffff1b57c40, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Objects/call.c:141
#16 _PyObject_Call_Prepend
    (kwargs=<optimized out>, args=<optimized out>, obj=<optimized out>, callable=0x7ffff1b57c40, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Objects/call.c:482
#17 slot_tp_init (self=<optimized out>, args=<optimized out>, kwds=<optimized out>)
    at Objects/typeobject.c:7863
#18 0x00007ffff79d9e33 in type_call (kwds=0x0, args=0x7fffeb4f3040, type=<optimized out>)
    at Objects/typeobject.c:1112
#19 _PyObject_MakeTpCall
    (tstate=0x7ffff7d89a38 <_PyRuntime+166328>, callable=0x555555a6c120, args=<optimized out>, nargs=<optimized out>, keywords=0x0) at Objects/call.c:214
#20 0x00007ffff79e4379 in _PyEval_EvalFrameDefault
    (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:4773
#21 0x00007ffff7a0a9e0 in _PyEval_EvalFrame
    (throwflag=0, frame=0x7ffff7f9f1e8, tstate=0x7ffff7d89a38 <_PyRuntime+166328>)
    at ./Include/internal/pycore_ceval.h:73
#22 _PyEval_Vector
    (kwnames=<optimized out>, argcount=3, args=0x7fffffffd4c0, locals=0x0, func=0x7ffff1b57920, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Python/ceval.c:6438
#23 _PyFunction_Vectorcall
    (func=0x7ffff1b57920, stack=0x7fffffffd4c0, nargsf=<optimized out>, kwnames=<optimized out>)
    at Objects/call.c:393
#24 0x00007ffff7a127b0 in _PyObject_FastCallDictTstate
    (kwargs=0x0, nargsf=<optimized out>, args=0x7fffffffd4c0, callable=0x7ffff1b57920, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Objects/call.c:141
#25 _PyObject_Call_Prepend
    (kwargs=<optimized out>, args=<optimized out>, obj=<optimized out>, callable=0x7ffff1b57920, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Objects/call.c:482
#26 slot_tp_init (self=<optimized out>, args=<optimized out>, kwds=<optimized out>)
    at Objects/typeobject.c:7863
#27 0x00007ffff79d9e33 in type_call (kwds=0x0, args=0x7fffeb613ac0, type=<optimized out>)
    at Objects/typeobject.c:1112
#28 _PyObject_MakeTpCall
    (tstate=0x7ffff7d89a38 <_PyRuntime+166328>, callable=0x555555a6c800, args=<optimized out>, nargs=<optimized out>, keywords=0x0) at Objects/call.c:214
#29 0x00007ffff79e4379 in _PyEval_EvalFrameDefault
    (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:4773
#30 0x00007ffff7a0a9e0 in _PyEval_EvalFrame
    (throwflag=0, frame=0x7ffff7f9f150, tstate=0x7ffff7d89a38 <_PyRuntime+166328>)
    at ./Include/internal/pycore_ceval.h:73
#31 _PyEval_Vector
    (kwnames=<optimized out>, argcount=1, args=0x7ffff6200d48, locals=0x0, func=0x7ffff1830180, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Python/ceval.c:6438
#32 _PyFunction_Vectorcall
    (func=0x7ffff1830180, stack=0x7ffff6200d48, nargsf=<optimized out>, kwnames=<optimized out>)
    at Objects/call.c:393
#33 0x00007ffff7e03773 in _pygi_closure_handle
    (cif=<optimized out>, result=result@entry=0x7fffffffd9d0, args=args@entry=0x7fffffffd840, data=data@entry=0x555555a72a80) at ../pygobject/gi/pygi-closure.c:582
#34 0x00007ffff7dd50d2 in ffi_closure_unix64_inner
    (cif=<optimized out>, fun=<optimized out>, user_data=<optimized out>, rvalue=<optimized out>, reg_args=<optimized out>, argp=0x7fffffffda00 "") at ../src/x86/ffi64.c:899
#35 0x00007ffff7dd5718 in ffi_closure_unix64 () at ../src/x86/unix64.S:303
#36 0x00007ffff6cd5bc9 in _g_closure_invoke_va
    (param_types=0x0, n_params=<optimized out>, args=0x7fffffffdb90, instance=0x555555aebe20, return_value=0x0, closure=0x555555baf830) at ../glib/gobject/gclosure.c:895
#37 g_signal_emit_valist
    (instance=0x555555aebe20, signal_id=268, detail=<optimized out>, var_args=var_args@entry=0x7fffffffdb90) at ../glib/gobject/gsignal.c:3472
#38 0x00007ffff6cd5d34 in g_signal_emit
    (instance=instance@entry=0x555555aebe20, signal_id=<optimized out>, detail=detail@entry=0)
    at ../glib/gobject/gsignal.c:3622
#39 0x00007ffff6b0e575 in g_application_register
    (application=application@entry=0x555555aebe20, cancellable=cancellable@entry=0x0, error=error@entry=0x7fffffffdd00) at ../glib/gio/gapplication.c:2213
#40 0x00007ffff6b0eb30 in g_application_real_local_command_line
    (application=0x555555aebe20, arguments=0x7fffffffdd58, exit_status=0x7fffffffdd54)
    at ../glib/gio/gapplication.c:1115
#41 0x00007ffff6b0ee6c in g_application_run
    (application=0x555555aebe20, argc=<optimized out>, argv=0x555555bf5230)
    at ../glib/gio/gapplication.c:2542
#42 0x00007ffff7dd54f6 in ffi_call_unix64 () at ../src/x86/unix64.S:104
#43 0x00007ffff7dd1f5e in ffi_call_int
    (cif=cif@entry=0x555555bf4a58, fn=<optimized out>, rvalue=<optimized out>, avalue=<optimized out>, closure=closure@entry=0x0) at ../src/x86/ffi64.c:673
#44 0x00007ffff7dd4b73 in ffi_call
    (cif=cif@entry=0x555555bf4a58, fn=<optimized out>, rvalue=rvalue@entry=0x7fffffffdf78, avalue=<optimized out>) at ../src/x86/ffi64.c:710
#45 0x00007ffff7e046c1 in pygi_invoke_c_callable
    (function_cache=0x555555bf49b0, state=<optimized out>, py_args=<optimized out>, py_kwargs=<optimized out>) at ../pygobject/gi/pygi-invoke.c:684
#46 0x00007ffff7e03080 in pygi_function_cache_invoke
    (py_kwargs=0x7ffff1820440, py_args=0x7ffff1b53000, function_cache=<optimized out>)
    at ../pygobject/gi/pygi-cache.c:862
#47 pygi_callable_info_invoke
    (user_data=0x0, cache=<optimized out>, kwargs=0x7ffff1820440, py_args=0x7ffff1b53000, info=<optimized out>) at ../pygobject/gi/pygi-invoke.c:727
#48 _wrap_g_callable_info_invoke
    (self=<optimized out>, py_args=0x7ffff1b53000, kwargs=0x7ffff1820440)
    at ../pygobject/gi/pygi-invoke.c:764
#49 0x00007ffff7a15155 in _PyObject_Call
    (kwargs=<optimized out>, args=0x7ffff1b53000, callable=0x7ffff622a670, tstate=0x7ffff7d89a38 <_PyRuntime+166328>) at Objects/call.c:343
#50 PyObject_Call (callable=0x7ffff622a670, args=0x7ffff1b53000, kwargs=<optimized out>)
    at Objects/call.c:355
#51 0x00007ffff79e7e77 in do_call_core
    (use_tracing=<optimized out>, kwdict=0x7ffff1820440, callargs=0x7ffff1b53000, func=0x7ffff622a670, tstate=<optimized out>) at Python/ceval.c:7356
#52 _PyEval_EvalFrameDefault
    (tstate=<optimized out>, frame=<optimized out>, throwflag=<optimized out>)
    at Python/ceval.c:5380
#53 0x00007ffff7a9e9aa in _PyEval_EvalFrame
    (throwflag=0, frame=0x7ffff7f9f020, tstate=0x7ffff7d89a38 <_PyRuntime+166328>)
    at ./Include/internal/pycore_ceval.h:73
#54 _PyEval_Vector
    (tstate=tstate@entry=0x7ffff7d89a38 <_PyRuntime+166328>, func=func@entry=0x7ffff75e9f80, locals=locals@entry=0x7ffff760ab80, args=args@entry=0x0, argcount=argcount@entry=0, kwnames=kwnames@entry=0x0) at Python/ceval.c:6438
#55 0x00007ffff7a9e3bc in PyEval_EvalCode
    (co=0x555555633410, globals=<optimized out>, locals=0x7ffff760ab80) at Python/ceval.c:1154
#56 0x00007ffff7abc503 in run_eval_code_obj
    (tstate=tstate@entry=0x7ffff7d89a38 <_PyRuntime+166328>, co=co@entry=0x555555633410, globals=globals@entry=0x7ffff760ab80, locals=locals@entry=0x7ffff760ab80) at Python/pythonrun.c:1714
#57 0x00007ffff7ab83ca in run_mod
    (mod=mod@entry=0x55555564c678, filename=filename@entry=0x7ffff760acf0, globals=globals@entry=0x7ffff760ab80, locals=locals@entry=0x7ffff760ab80, flags=flags@entry=0x7fffffffe4c8, arena=arena@entry=0x7ffff75337d0) at Python/pythonrun.c:1735
#58 0x00007ffff7acecf3 in pyrun_file
    (fp=fp@entry=0x55555555a470, filename=filename@entry=0x7ffff760acf0, start=start@entry=257, globals=globals@entry=0x7ffff760ab80, locals=locals@entry=0x7ffff760ab80, closeit=closeit@entry=1, flags=0x7fffffffe4c8) at Python/pythonrun.c:1630
#59 0x00007ffff7ace525 in _PyRun_SimpleFileObject
    (fp=0x55555555a470, filename=0x7ffff760acf0, closeit=1, flags=0x7fffffffe4c8)
    at Python/pythonrun.c:440
#60 0x00007ffff7accf18 in _PyRun_AnyFileObject
    (fp=0x55555555a470, filename=0x7ffff760acf0, closeit=1, flags=0x7fffffffe4c8)
    at Python/pythonrun.c:79
#61 0x00007ffff7ac77e8 in pymain_run_file_obj
    (skip_source_first_line=0, filename=0x7ffff760acf0, program_name=0x7ffff760c170)
    at Modules/main.c:360
#62 pymain_run_file (config=0x7ffff7d6fa80 <_PyRuntime+59904>) at Modules/main.c:379
#63 pymain_run_python (exitcode=0x7fffffffe4c0) at Modules/main.c:601
#64 Py_RunMain () at Modules/main.c:680
#65 0x00007ffff7a90c3b in Py_BytesMain (argc=<optimized out>, argv=<optimized out>)
    at Modules/main.c:734
#66 0x00007ffff7639850 in __libc_start_call_main
    (main=main@entry=0x555555555120 <main>, argc=argc@entry=3, argv=argv@entry=0x7fffffffe718)
    at ../sysdeps/nptl/libc_start_call_main.h:58
#67 0x00007ffff763990a in __libc_start_main_impl
    (main=0x555555555120 <main>, argc=3, argv=0x7fffffffe718, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe708) at ../csu/libc-start.c:360
#68 0x0000555555555045 in _start ()
(gdb) 

from gtg.

Neui avatar Neui commented on July 21, 2024

This appears to be the same issue as #961.

As a workaround, do: #961 (comment)

Open ~/.config/gtg/gtg.conf in an plain-text editor such as GNOME editor, vim or whatever you like, and under [browser], find a line font_name = and change it to font_name = Sans 11.

This changes the font of the task editor. You can change it later in the settings.

from gtg.

ksdrummer avatar ksdrummer commented on July 21, 2024

Yes it seems to have solved it. Thanks a lot ! Sorry for not having found #961

from gtg.

nekohayo avatar nekohayo commented on July 21, 2024

Duplicate of #961

from gtg.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.